All Downloads are FREE. Search and download functionalities are using the official Maven repository.

static.js.vendor.eeh-navigation.src.active-menu-item.eeh-navigation-active-menu-item-directive.js Maven / Gradle / Ivy

The newest version!
'use strict';
angular.module('eehNavigation').directive('eehNavigationActiveMenuItem', ActiveMenuItemDirective);

function isMenuItemActive(menuItem, $state) {
    if (!menuItem.hasChildren()) {
        // Return whether or not the leaf is active.
        return angular.isDefined(menuItem.state) && $state.includes(menuItem.state);
    }
    var children = menuItem.children();
    for (var i = 0; i < children.length; i++) {
        if (angular.isDefined(children[i].state) && $state.includes(children[i].state)) {
            // Return true if the child menu item is active.
            return true;
        }
        if (isMenuItemActive(children[i], $state)) {
            // Return true if the child has at least one active child of its own.
            return true;
        }
    }
    // Return false if the menu item has no active children.
    return false;
}

/** @ngInject */
function ActiveMenuItemDirective($state) {
    return {
        restrict: 'A',
        scope: {
            menuItem: '=eehNavigationActiveMenuItem'
        },
        link: function (scope, element) {
            var checkIsActive = function () {
                var isActive = isMenuItemActive(scope.menuItem, $state);
                element.toggleClass('active', isActive);
            };
            scope.$on('$stateChangeSuccess', checkIsActive);
            checkIsActive();
        }
    };
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy