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) - SEM HEADERS
     // CONTROLADOR DE DROPDOWN INDEPENDENTE NO ÍNDICE (TOC) - FIX TOTAL
     // ==========================================================================
     // ==========================================================================
      
      
     // Procura os itens de lista, mas ignora explicitamente o nó de boas-vindas/título principal
     // Almeja estritamente as listas internas de conteúdo numérico, ignorando totalmente os blocos de topo
     $('#mw-panel-toc .vector-toc-list-item, .vector-page-titlebar-toc .vector-toc-list-item')
     $('.vector-toc-contents .vector-toc-list .vector-toc-list-item').each(function() {
    .not('#sidebar-toc-welcome, .vector-toc-title, :has(> #vector-toc-collapsed-button)')
    .each(function() {
         var $listItem = $(this);
         var $listItem = $(this);
          
          
         // Se for o link do cabeçalho geral (geralmente não tem numeração ou tem ID específico), sai fora
         // Camada extra de proteção: Se for o botão colapsável nativo ou o cabeçalho, ignora completamente
         if ($listItem.find('#vector-toc-collapsed-button').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;
         }
         }


         var $subList = $listItem.children('ul, .vector-toc-list');
         var $subList = $listItem.children('.vector-toc-list, ul');
          
          
         // Só avança se a lista filha tiver subcapítulos lá dentro
         // Só injeta a seta se este item contiver subcapítulos (filhos reais)
         if ($subList.length > 0 && $subList.children('li, .vector-toc-list-item').length > 0) {
         if ($subList.length > 0 && $subList.children('.vector-toc-list-item, li').length > 0) {
              
              
             // Cria a seta apenas se ela ainda não existir nesta linha
             // 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>');
                 var $arrow = $('<span class="toc-toggle-arrow">▶</span>');
                  
                  
                 // Evento de clique focado apenas na seta
                 // Evento focado unicamente na nossa seta customizada
                 $arrow.click(function(e) {
                 $arrow.click(function(e) {
                     e.preventDefault();
                     e.preventDefault();
Line 33: Line 31:
                 });
                 });
                  
                  
                 // Adiciona a seta no topo do container do item
                 // Coloca a seta na raiz do item de lista (ao lado esquerdo do link)
                 $listItem.prepend($arrow);
                 $listItem.prepend($arrow);
             }
             }