storyboard-webclient/src/app/util/directive/active_path.js

45 lines
1.5 KiB
JavaScript

/*
* Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
/**
* This directive requires ui-router, as it listens for events dispatched as
* a user navigates through the application, and adds the 'active' class to
* the bound element if the user's selected path matches the one configured.
*
* @author Michael Krotscheck
*/
angular.module('sb.util').directive('activePath',
function ($location, $rootScope) {
'use strict';
return {
link: function ($scope, element, attrs) {
var activePath = attrs.activePath;
function setActivePath() {
var isActive = activePath === $location.path();
element.toggleClass('active', isActive);
}
$scope.$on('$destroy',
$rootScope.$on('$stateChangeSuccess', setActivePath)
);
// INIT
setActivePath();
}
};
});