/* * Axelor Business Solutions * * Copyright (C) 2005-2019 Axelor (). * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ (function() { "use strict"; var ui = angular.module('axelor.ui'); ui.directive('uiNavTabs', function() { return { restrict: 'EA', replace: true, link: function(scope, elem, attrs) { if (scope.singleTabOnly) { return elem.parent().addClass("view-tabs-single"); } scope.$watch('tabs.length', function navTabsWatch(value, oldValue){ if (value != oldValue) elem.trigger('adjust:tabs'); }); var menu = $(); setTimeout(function () { elem.bsTabs(); elem.on('contextmenu', '.nav-tabs-main > li > a', showMenu); menu = elem.find('#nav-tabs-menu'); menu.css({ position: 'absolute', zIndex: 1000 }).hide(); }); function showMenu(e) { var tabElem = $(e.target).parents('li:first'); var tabScope = tabElem.data('$scope'); if (!tabScope || !tabScope.tab) { return; } e.preventDefault(); e.stopPropagation(); scope.current = tabScope.tab; scope.$timeout(function () { var offset = elem.offset(); menu.show().css({ left: e.pageX - offset.left, top: e.pageY - offset.top }); $(document).on('click.nav-tabs-menu', hideMenu); }); } function hideMenu(e) { scope.$timeout(function () { scope.current = null; menu.hide(); }); $(document).off('click.nav-tabs-menu'); } }, templateUrl: 'partials/nav-tabs.html' }; }); })();