Difference between revisions of "MediaWiki:Common.js"

From XilePK - Ragnarok Online Server
Jump to navigation Jump to search
Line 23: Line 23:
 
/* Auto-expand sections when clicking anchored links */
 
/* Auto-expand sections when clicking anchored links */
 
$(document).ready(function() {
 
$(document).ready(function() {
   // Handle initial page load with hash
+
   // Handle page load with hash in URL
 
   if (window.location.hash) {
 
   if (window.location.hash) {
     expandSectionForAnchor(window.location.hash);
+
     setTimeout(function() {
 +
      expandSectionForAnchor(window.location.hash);
 +
    }, 500); // Pequeno atraso para garantir que a página esteja totalmente carregada
 
   }
 
   }
 
    
 
    
Line 44: Line 46:
 
       // If the target is inside a collapsed section, expand it
 
       // If the target is inside a collapsed section, expand it
 
       if (collapsibleSection.length) {
 
       if (collapsibleSection.length) {
         // Click the toggle button to expand
+
         // Expand all parent collapsible sections as well
         collapsibleSection.find('.mw-collapsible-toggle').first().click();
+
         targetElement.parents('.mw-collapsible.mw-collapsed').each(function() {
 +
          $(this).find('.mw-collapsible-toggle').first().click();
 +
        });
 
          
 
          
         // Scroll to the element after a short delay to allow expansion
+
         // Scroll to the element after expansion
 
         setTimeout(function() {
 
         setTimeout(function() {
 
           $('html, body').animate({
 
           $('html, body').animate({
Line 53: Line 57:
 
           }, 200);
 
           }, 200);
 
         }, 300);
 
         }, 300);
 +
      } else {
 +
        // Even if not in a collapsed section, ensure proper scrolling
 +
        setTimeout(function() {
 +
          $('html, body').animate({
 +
            scrollTop: targetElement.offset().top - 100
 +
          }, 200);
 +
        }, 100);
 
       }
 
       }
 
     }
 
     }
 
   }
 
   }
 
});
 
});

Revision as of 13:08, 23 April 2025

/* Any JavaScript here will be loaded for all users on every page load. */

$(document).ready(function() {
  $(document).on('click', '.warp-copy', function() {
    var textToCopy = $(this).attr('data-copy');
    
    var tempInput = document.createElement('textarea');
    tempInput.value = textToCopy;
    document.body.appendChild(tempInput);
    tempInput.select();
    document.execCommand('copy');
    document.body.removeChild(tempInput);
    
    var originalColor = $(this).css('color');
    $(this).css('color', 'green');
    var self = this;
    setTimeout(function() {
      $(self).css('color', originalColor);
    }, 500);
  });
});

/* Auto-expand sections when clicking anchored links */
$(document).ready(function() {
  // Handle page load with hash in URL
  if (window.location.hash) {
    setTimeout(function() {
      expandSectionForAnchor(window.location.hash);
    }, 500); // Pequeno atraso para garantir que a página esteja totalmente carregada
  }
  
  // Handle clicks on anchor links within the page
  $(document).on('click', 'a[href^="#"]', function(event) {
    var hash = $(this).attr('href');
    expandSectionForAnchor(hash);
  });
  
  // Function to expand section containing an anchor
  function expandSectionForAnchor(hash) {
    // Try to find the anchor element
    var targetElement = $(hash);
    if (targetElement.length) {
      // Find the closest collapsible section
      var collapsibleSection = targetElement.closest('.mw-collapsible.mw-collapsed');
      
      // If the target is inside a collapsed section, expand it
      if (collapsibleSection.length) {
        // Expand all parent collapsible sections as well
        targetElement.parents('.mw-collapsible.mw-collapsed').each(function() {
          $(this).find('.mw-collapsible-toggle').first().click();
        });
        
        // Scroll to the element after expansion
        setTimeout(function() {
          $('html, body').animate({
            scrollTop: targetElement.offset().top - 100
          }, 200);
        }, 300);
      } else {
        // Even if not in a collapsed section, ensure proper scrolling
        setTimeout(function() {
          $('html, body').animate({
            scrollTop: targetElement.offset().top - 100
          }, 200);
        }, 100);
      }
    }
  }
});