MediaWiki:Common.js: Difference between revisions
Appearance
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 | ||
// ========================================================================== | // ========================================================================== | ||
// | // 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'); | |||
// | // Regra restrita: Só adiciona a seta se houver uma lista interna E se essa lista tiver subcapítulos (li) lá dentro | ||
if ($ | 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'); | ||
// | // 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>'); | ||
$arrow.click(function(e) { | $arrow.click(function(e) { | ||
e.preventDefault(); | e.preventDefault(); // Impede o salto de scroll para o link | ||
e.stopPropagation(); // | e.stopPropagation(); // Não deixa o clique ativar a navegação do link principal | ||
// Alterna | // Alterna o estado aberto/fechado na linha | ||
$listItem.toggleClass('toc-expanded'); | $listItem.toggleClass('toc-expanded'); | ||
}); | }); | ||
// | // Adiciona a seta no início do link, garantindo um alinhamento limpo à esquerda | ||
$link. | $link.prepend($arrow); | ||
} | } | ||
} | } | ||
}); | }); | ||