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');
          
          
         if ($(this).closest('.tab-navigation').length) {
         // Update main race tabs
            // Main tab clicked
        $('.tab-navigation .tab-button').removeClass('active');
            $('.tab-navigation .tab-button').removeClass('active');
        $(this).addClass('active');
            $('.tab-content .tab-pane').removeClass('active');
       
           
        // Update main content panes
            $(this).addClass('active');
        $('.tab-content > .tab-pane').removeClass('active');
            $('#' + targetId).addClass('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 handler - separate from main tab handler
     // 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(); // Prevent event from bubbling up
         e.stopPropagation();
          
          
        var $subNav = $(this).closest('.sub-tab-navigation');
         var targetId = $(this).data('target');
         var targetId = $(this).data('target');
        var $subNav = $(this).closest('.sub-tab-navigation');
          
          
         // Only affect buttons and panes within this sub-tab-navigation
         // Only update tabs within this sub-navigation
         $subNav.find('.tab-button').removeClass('active');
         $subNav.find('.tab-button').removeClass('active');
         $subNav.find('.tab-pane').removeClass('active');
         $(this).addClass('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 states for main tabs
     // Initial setup
    $('.tab-navigation').each(function() {
    function initializeTabs() {
        var $nav = $(this);
        // Set first race tab active if none are
        var $activeTab = $nav.find('.tab-button.active');
        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 (!$activeTab.length) {
         // For each race tab that's active
            $activeTab = $nav.find('.tab-button').first();
        $('.tab-navigation .tab-button.active').each(function() {
            $activeTab.addClass('active');
            var mainTargetId = $(this).data('target');
            $('#' + $activeTab.data('target')).addClass('active');
            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');
            }
         });
     }
      
      
     // Set initial states for sub-tabs
     // Run initial setup
     $('.sub-tab-navigation').each(function() {
     initializeTabs();
        var $subNav = $(this);
        var $activeSubTab = $subNav.find('.tab-button.active');
       
        if (!$activeSubTab.length) {
            $activeSubTab = $subNav.find('.tab-button').first();
            $activeSubTab.addClass('active');
            $('#' + $activeSubTab.data('target')).addClass('active');
        }
    });
});
});

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();
});