MediaWiki:Common.js: Difference between revisions
From Ultimate Dragon Ball Online Wiki
Ravenalien (talk | contribs) No edit summary |
Ravenalien (talk | contribs) No edit summary |
||
| Line 4: | Line 4: | ||
'use strict'; | 'use strict'; | ||
// Main tab click handler | // Main race tab click handler | ||
$('.tab-navigation .tab-button').click(function(e) { | $('.tab-navigation .tab-button').click(function(e) { | ||
e.preventDefault(); | e.preventDefault(); | ||
| Line 10: | Line 10: | ||
var targetId = $(this).data('target'); | var targetId = $(this).data('target'); | ||
// Update main race tabs | |||
$('.tab-navigation .tab-button').removeClass('active'); | |||
$(this).addClass('active'); | |||
// Update main content panes | |||
$('.tab-content > .tab-pane').removeClass('active'); | |||
$('#' + targetId).addClass('active'); | |||
// Always activate the overview tab for the selected race | |||
var overviewTab = $('#' + targetId + ' .sub-tab-navigation .tab-button').first(); | |||
var overviewContent = $('#' + overviewTab.data('target')); | |||
// Set overview tab and content as active | |||
$('#' + targetId + ' .sub-tab-navigation .tab-button').removeClass('active'); | |||
overviewTab.addClass('active'); | |||
$('#' + targetId + ' .tab-pane').removeClass('active'); | |||
overviewContent.addClass('active'); | |||
}); | }); | ||
// Sub-tab click | // Sub-class tab click handler | ||
$('.sub-tab-navigation .tab-button').click(function(e) { | $('.sub-tab-navigation .tab-button').click(function(e) { | ||
e.preventDefault(); | e.preventDefault(); | ||
e.stopPropagation(); | e.stopPropagation(); | ||
var $subNav = $(this).closest('.sub-tab-navigation'); | |||
var targetId = $(this).data('target'); | var targetId = $(this).data('target'); | ||
// Only | // Only update tabs within this sub-navigation | ||
$subNav.find('.tab-button').removeClass('active'); | $subNav.find('.tab-button').removeClass('active'); | ||
$ | $(this).addClass('active'); | ||
$( | // Only update content within the current race's content area | ||
$subNav.parent().find('> .tab-pane').removeClass('active'); | |||
$('#' + targetId).addClass('active'); | $('#' + targetId).addClass('active'); | ||
}); | }); | ||
// Set | // Initial setup | ||
function initializeTabs() { | |||
// Set first race tab active if none are | |||
var $mainNav = $('.tab-navigation'); | |||
if (!$mainNav.find('.tab-button.active').length) { | |||
var $firstMainTab = $mainNav.find('.tab-button').first(); | |||
$firstMainTab.addClass('active'); | |||
var mainTargetId = $firstMainTab.data('target'); | |||
$('#' + mainTargetId).addClass('active'); | |||
// Set its overview tab active | |||
var $overviewTab = $('#' + mainTargetId + ' .sub-tab-navigation .tab-button').first(); | |||
$overviewTab.addClass('active'); | |||
$('#' + $overviewTab.data('target')).addClass('active'); | |||
} | |||
if (!$ | // For each race tab that's active | ||
$('.tab-navigation .tab-button.active').each(function() { | |||
var mainTargetId = $(this).data('target'); | |||
var $mainContent = $('#' + mainTargetId); | |||
} | |||
} | // Ensure overview tab is active if no sub-tab is active | ||
var $subNav = $mainContent.find('.sub-tab-navigation'); | |||
if ($subNav.length && !$subNav.find('.tab-button.active').length) { | |||
var $overviewTab = $subNav.find('.tab-button').first(); | |||
$overviewTab.addClass('active'); | |||
$('#' + $overviewTab.data('target')).addClass('active'); | |||
} | |||
}); | |||
} | |||
// | // Run initial setup | ||
initializeTabs(); | |||
}); | }); | ||
Revision as of 06:48, 26 February 2025
/* Any JavaScript here will be loaded for all users on every page load. */
$(document).ready(function() {
'use strict';
// Main race tab click handler
$('.tab-navigation .tab-button').click(function(e) {
e.preventDefault();
var targetId = $(this).data('target');
// Update main race tabs
$('.tab-navigation .tab-button').removeClass('active');
$(this).addClass('active');
// Update main content panes
$('.tab-content > .tab-pane').removeClass('active');
$('#' + targetId).addClass('active');
// Always activate the overview tab for the selected race
var overviewTab = $('#' + targetId + ' .sub-tab-navigation .tab-button').first();
var overviewContent = $('#' + overviewTab.data('target'));
// Set overview tab and content as active
$('#' + targetId + ' .sub-tab-navigation .tab-button').removeClass('active');
overviewTab.addClass('active');
$('#' + targetId + ' .tab-pane').removeClass('active');
overviewContent.addClass('active');
});
// Sub-class tab click handler
$('.sub-tab-navigation .tab-button').click(function(e) {
e.preventDefault();
e.stopPropagation();
var $subNav = $(this).closest('.sub-tab-navigation');
var targetId = $(this).data('target');
// Only update tabs within this sub-navigation
$subNav.find('.tab-button').removeClass('active');
$(this).addClass('active');
// Only update content within the current race's content area
$subNav.parent().find('> .tab-pane').removeClass('active');
$('#' + targetId).addClass('active');
});
// Initial setup
function initializeTabs() {
// Set first race tab active if none are
var $mainNav = $('.tab-navigation');
if (!$mainNav.find('.tab-button.active').length) {
var $firstMainTab = $mainNav.find('.tab-button').first();
$firstMainTab.addClass('active');
var mainTargetId = $firstMainTab.data('target');
$('#' + mainTargetId).addClass('active');
// Set its overview tab active
var $overviewTab = $('#' + mainTargetId + ' .sub-tab-navigation .tab-button').first();
$overviewTab.addClass('active');
$('#' + $overviewTab.data('target')).addClass('active');
}
// For each race tab that's active
$('.tab-navigation .tab-button.active').each(function() {
var mainTargetId = $(this).data('target');
var $mainContent = $('#' + mainTargetId);
// Ensure overview tab is active if no sub-tab is active
var $subNav = $mainContent.find('.sub-tab-navigation');
if ($subNav.length && !$subNav.find('.tab-button.active').length) {
var $overviewTab = $subNav.find('.tab-button').first();
$overviewTab.addClass('active');
$('#' + $overviewTab.data('target')).addClass('active');
}
});
}
// Run initial setup
initializeTabs();
});