changedetection.io/changedetectionio/static/js/tabs.js

66 wiersze
2.0 KiB
JavaScript
Czysty Zwykły widok Historia

(function ($) {
$.fn.hashTabs = function (options) {
var settings = $.extend({
tabContainer: ".tabs ul",
tabSelector: "li a",
tabContent: ".tab-pane-inner",
activeClass: "active",
errorClass: ".messages .error",
bodyClassToggle: "full-width"
}, options);
var $tabs = $(settings.tabContainer).find(settings.tabSelector);
function setActiveTab() {
var hash = window.location.hash;
var $activeTab = $tabs.filter("[href='" + hash + "']");
// Remove active class from all tabs
$(settings.tabContainer).find("li").removeClass(settings.activeClass);
// Add active class to selected tab
if ($activeTab.length) {
$activeTab.parent().addClass(settings.activeClass);
}
// Show the correct content
$(settings.tabContent).hide();
if (hash) {
$(hash).show();
}
}
function focusErrorTab() {
$tabs.each(function () {
var tabName = this.hash.replace("#", "");
if ($("#" + tabName).find(settings.errorClass).length) {
window.location.hash = "#" + tabName;
return false; // Stop loop on first error tab
}
});
}
function initializeTabs() {
if ($(settings.errorClass).length) {
focusErrorTab();
} else if (!window.location.hash) {
window.location.replace($tabs.first().attr("href"));
} else {
setActiveTab();
}
}
// Listen for hash changes
$(window).on("hashchange", setActiveTab);
// Initialize on page load
initializeTabs();
return this; // Enable jQuery chaining
};
})(jQuery);
$(document).ready(function () {
$(".tabs").hashTabs();
});