Jump to content

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 2: Line 2:


$(document).ready(function() {
$(document).ready(function() {
     // Procura o link de PROBES na sidebar (que tem uma lista debaixo dele)
     // 1. Procura o link de PROBES na barra lateral através do texto exato do link
     $('.mw-sidebar-navigation li, .vector-main-menu li').each(function() {
     $('.vector-main-menu-sidebar a, .mw-sidebar-navigation a').each(function() {
         var $li = $(this);
         var $link = $(this);
        var $nextUl = $li.next('ul'); // Deteta se há sublinks (os 3 asteriscos)
          
          
         if ($nextUl.length > 0 || $li.find('ul').length > 0) {
         if ($link.text().trim() === 'PROBES') {
             var $subList = $nextUl.length > 0 ? $nextUl : $li.find('ul');
             var $liPrincipal = $link.closest('li');
              
              
             // Esconde os sublinks inicialmente
             // 2. Encontra a lista de sublinks (as sondas com 3 asteriscos) que o MediaWiki colocou logo a seguir
             $subList.hide();
             var $subLista = $liPrincipal.find('ul');
            if ($subLista.length === 0) {
                $subLista = $liPrincipal.next('ul');
            }
              
              
             // Adiciona uma seta clicável antes do texto do link
             if ($subLista.length > 0) {
            var $toggle = $('<span class="menu-toggle-arrow" style="cursor:pointer; margin-right:8px; display:inline-block; transition: transform 0.2s;">▶</span>');
                // Esconde as sondas inicialmente
            $li.prepend($toggle);
                $subLista.hide();
           
               
            // Faz com que ao clicar na seta ou no link de PROBES, o menu abra/feche
                // 3. Adiciona a seta de dropdown antes do texto PROBES
            $toggle.add($li.children('a')).on('click', function(e) {
                var $seta = $('<span class="seta-dropdown" style="cursor:pointer; margin-right:6px; display:inline-block; font-size:10px; transition: transform 0.2s;">▶</span>');
                // Se clicou na seta, não deixa o navegador seguir o link '#'
                $link.before($seta);
                if ($(e.target).hasClass('menu-toggle-arrow') || $li.children('a').attr('href').indexOf('#') !== -1) {
               
                    e.preventDefault();
                // 4. Cria a ação de clicar para abrir e fechar
                     $subList.slideToggle('fast');
                $link.parent().css('cursor', 'pointer').on('click', function(e) {
                    // Impede o navegador de tentar saltar para outra página se o link for apenas uma âncora (#Probes)
                    if ($link.attr('href').indexOf('#') !== -1) {
                        e.preventDefault();
                     }
                      
                      
                     // Roda a seta para baixo quando aberto
                     $subLista.slideToggle('fast', function() {
                    var isHidden = $subList.is(':hidden');
                        // Roda a seta: se estiver visível fica para baixo (90deg), se não, volta ao normal
                    $toggle.css('transform', isHidden ? 'rotate(0deg)' : 'rotate(90deg)');
                        if ($subLista.is(':visible')) {
                 }
                            $seta.css('transform', 'rotate(90deg)');
             });
                        } else {
                            $seta.css('transform', 'rotate(0deg)');
                        }
                    });
                 });
             }
         }
         }
     });
     });