(function() { "use strict"; angular.module('shared') .component('menuItemLink', { templateUrl: '/shared/js/angular/main-navigation/menu-item-link.html', controller: 'MenuItemLink', bindings: { url: '@', text: '@', linkClass: '@?', onSelectLink: '&?' } }) .controller('MenuItemLink', ['menuItemPopoverAmbassador', '$element', '$scope', 'responsiveSiteService', 'KeyCodes', function MenuItemLink(menuItemPopoverAmbassador, $element, $scope, responsiveSiteService, KeyCodes) { var ctrl = this; ctrl.isActive = false; ctrl.$onInit = function() { ctrl.responsiveWidthLimit = responsiveSiteService.getResponsiveWidthLimit(); ctrl.isResponsiveMainNavEnabled = responsiveSiteService.isMainNavigationResponsive(); menuItemPopoverAmbassador.registerOnUpdateMenuItem($scope, onUpdateActiveMenuItem); }; ctrl.getLinkClass = function() { var linkClass = ''; if (ctrl.linkClass) { linkClass = ctrl.linkClass; } if (ctrl.isActive) { linkClass += ' active'; } return linkClass; } ctrl.onClick = function() { if (ctrl.onSelectLink) { ctrl.onSelectLink(); } }; ctrl.onKeyDown = function(event) { if (ctrl.onSelectLink && (event.keyCode === KeyCodes.enter || event.keyCode === KeyCodes.space)) { ctrl.onSelectLink(); } }; function onUpdateActiveMenuItem(event, eventTarget) { ctrl.isActive = $element.find(eventTarget).length > 0; if (ctrl.isActive) { menuItemPopoverAmbassador.emitActivatedMenuItem(eventTarget); } } } ]) })();