Jump to content

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 3: Line 3:


// ==========================================================================
// ==========================================================================
     // CONTROLADOR DE DROPDOWN INDEPENDENTE NO ÍNDICE (TOC) - FIX TOTAL
     // CONTROLADOR DE DROPDOWN NO ÍNDICE (TOC) - VERSÃO VISUAL FINAL
     // ==========================================================================
     // ==========================================================================
      
      
    // Almeja estritamente as listas internas de conteúdo numérico, ignorando totalmente os blocos de topo
     $('.vector-toc-contents .vector-toc-list .vector-toc-list-item').each(function() {
     $('.vector-toc-contents .vector-toc-list .vector-toc-list-item').each(function() {
         var $listItem = $(this);
         var $listItem = $(this);
          
          
         // Camada extra de proteção: Se for o botão colapsável nativo ou o cabeçalho, ignora completamente
         // Proteção total ao cabeçalho global
         if ($listItem.find('.vector-toc-title, #vector-toc-collapsed-button, .vector-toc-header').length > 0 || $listItem.hasClass('vector-toc-title')) {
         if ($listItem.find('.vector-toc-title, #vector-toc-collapsed-button, .vector-toc-header').length > 0 || $listItem.hasClass('vector-toc-title')) {
             return;
             return;
Line 17: Line 16:
         var $subList = $listItem.children('.vector-toc-list, ul');
         var $subList = $listItem.children('.vector-toc-list, ul');
          
          
         // Só injeta a seta se este item contiver subcapítulos (filhos reais)
         // Só injeta o botão se contiver subcapítulos
         if ($subList.length > 0 && $subList.children('.vector-toc-list-item, li').length > 0) {
         if ($subList.length > 0 && $subList.children('.vector-toc-list-item, li').length > 0) {
              
              
            // Verifica se a seta já existe para evitar duplicações ao recarregar
             if ($listItem.children('.toc-toggle-arrow').length === 0) {
             if ($listItem.children('.toc-toggle-arrow').length === 0) {
                 var $arrow = $('<span class="toc-toggle-arrow"></span>');
                // Injeta o container da seta preparado para renderizar o SVG do CSS
                 var $arrow = $('<span class="toc-toggle-arrow"><span class="arrow-icon"></span></span>');
                  
                  
                // Evento focado unicamente na nossa seta customizada
                 $arrow.click(function(e) {
                 $arrow.click(function(e) {
                     e.preventDefault();
                     e.preventDefault();
Line 31: Line 29:
                 });
                 });
                  
                  
                // Coloca a seta na raiz do item de lista (ao lado esquerdo do link)
                 $listItem.prepend($arrow);
                 $listItem.prepend($arrow);
             }
             }