Jump to content

MediaWiki:Common.js: Difference between revisions

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


// ==========================================================================
// ==========================================================================
     // CONTROLADOR DE DROPDOWN MANUAL NO ÍNDICE LATERAL (TOC)
     // CONTROLADOR DE DROPDOWN MANUAL NO ÍNDICE LATERAL (TOC) - SÓ ONDE HÁ FILHOS
     // ==========================================================================
     // ==========================================================================
      
      
     // Injeta a seta (▶) apenas nos itens do índice que possuem subcapítulos
     // Alvo apenas nas linhas de link do índice ativo, ignorando o título principal do container
     $('.vector-toc-list-item').each(function() {
     $('.vector-toc-list-item').each(function() {
         var $listItem = $(this);
         var $listItem = $(this);
        var $subList = $listItem.children('.vector-toc-list');
          
          
         // Se este item tem uma lista filha (subcapítulos), adiciona a seta
         // Regra restrita: Só adiciona a seta se houver uma lista interna E se essa lista tiver subcapítulos (li) lá dentro
         if ($listItem.children('.vector-toc-list').length > 0) {
         if ($subList.length > 0 && $subList.children('.vector-toc-list-item').length > 0) {
             var $link = $listItem.children('.vector-toc-link');
             var $link = $listItem.children('.vector-toc-link');
              
              
             // Cria o elemento da seta se ainda não existir
             // Evita duplicações inserindo o botão apenas se ele não existir
             if ($link.find('.toc-toggle-arrow').length === 0) {
             if ($link.find('.toc-toggle-arrow').length === 0) {
                // Criamos um elemento isolado para a seta para não misturar com o texto do link
                 var $arrow = $('<span class="toc-toggle-arrow">▶</span>');
                 var $arrow = $('<span class="toc-toggle-arrow">▶</span>');
                  
                  
                // Evento de clique exclusivo na seta
                 $arrow.click(function(e) {
                 $arrow.click(function(e) {
                     e.preventDefault(); // Impede que a página navegue para o link
                     e.preventDefault();   // Impede o salto de scroll para o link
                     e.stopPropagation();  // Impede que o clique ative o link principal
                     e.stopPropagation();  // Não deixa o clique ativar a navegação do link principal
                      
                      
                     // Alterna a expansão da árvore de subcapítulos
                     // Alterna o estado aberto/fechado na linha
                     $listItem.toggleClass('toc-expanded');
                     $listItem.toggleClass('toc-expanded');
                 });
                 });
                  
                  
                 // Junta a seta ao link do índice
                 // Adiciona a seta no início do link, garantindo um alinhamento limpo à esquerda
                 $link.append($arrow);
                 $link.prepend($arrow);
             }
             }
         }
         }
     });
     });