Files
awx/awx/ui/client/lib/components/layout/side-nav-item.directive.js
John Mitchell b0dd10b538 sidenav sub pane feedback
make height the same as side nav items
no tooltip for collapsed settings
2018-10-18 13:37:44 -04:00

71 lines
1.9 KiB
JavaScript

const templateUrl = require('~components/layout/side-nav-item.partial.html');
function atSideNavItemLink (scope, element, attrs, ctrl) {
[scope.navVm, scope.layoutVm] = ctrl;
if (attrs.showSettingsSubMenu) {
element.hover(() => {
scope.navVm.onSettingsNavItem = true;
scope.navVm.showSettingsSubMenu = true;
}, () => {
scope.navVm.onSettingsNavItem = false;
setTimeout(() => {
if (!scope.navVm.onSettingsSubPane) {
scope.navVm.showSettingsSubMenu = false;
}
}, 100);
});
}
}
function AtSideNavItemController ($scope, strings) {
const vm = this || {};
$scope.$watch('layoutVm.currentState', current => {
if ($scope.name === 'portal mode') {
vm.isRoute = (current && current.indexOf('portalMode') === 0);
} else if (current && current.indexOf($scope.route) === 0) {
if (current.indexOf('schedules') === 0 && $scope.route === 'jobs') {
vm.isRoute = false;
} else {
vm.isRoute = true;
}
} else {
vm.isRoute = false;
}
});
vm.tooltip = {
popover: {
text: strings.get(`layout.${$scope.name}`),
on: 'mouseenter',
icon: $scope.iconClass,
position: 'right',
arrowHeight: 18
}
};
}
AtSideNavItemController.$inject = ['$scope', 'ComponentsStrings'];
function atSideNavItem () {
return {
restrict: 'E',
templateUrl,
require: ['^^atSideNav', '^^atLayout'],
controller: AtSideNavItemController,
controllerAs: 'vm',
link: atSideNavItemLink,
transclude: true,
scope: {
iconClass: '@',
name: '@',
route: '@',
systemAdminOnly: '@',
noTooltipOnCollapsed: '@'
}
};
}
export default atSideNavItem;