Jump to content

MediaWiki:Common.js: Difference between revisions

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




mw.hook('wikipage.content').add(function() {
mw.loader.using(['mediawiki.util', 'jquery'], function () {
     // Garante que o menu lateral do Vector já existe no HTML
     // Função principal que injeta a lógica do dropdown
    var $menu = $('.mw-table-of-contents-container, .vector-main-menu, #mw-panel');
    function setupAtlasDropdown() {
   
        // Encontra o menu lateral do Vector 2022
    if ($menu.length) {
        var $sidebar = $('.vector-main-menu, #mw-panel, .mw-table-of-contents-container');
        // 1. Procura as subpáginas e adiciona a classe para esconder
        if (!$sidebar.length) return;
        $menu.find('a[href*="SENSBLUE_ATLAS/"]').closest('li').addClass('atlas-submenu');


         // 2. Encontra o link principal do Atlas (garantindo que não adiciona duplicados)
         // 1. Esconde as subpáginas aplicando a classe CSS
         var $mainAtlasLi = $menu.find('a[href$="SENSBLUE_ATLAS"]').closest('li');
         $sidebar.find('a[href*="SENSBLUE_ATLAS/"]').closest('li').addClass('atlas-submenu');


        // 2. Procura a página principal do Atlas
        var $mainAtlasLi = $sidebar.find('a[href$="SENSBLUE_ATLAS"]').closest('li');
        // Se encontrou e ainda não tem a seta injetada
         if ($mainAtlasLi.length && !$mainAtlasLi.find('.atlas-toggle-btn').length) {
         if ($mainAtlasLi.length && !$mainAtlasLi.find('.atlas-toggle-btn').length) {
             // Ajusta o alinhamento para a seta ficar ao lado
           
             // Garante que o texto e a seta ficam alinhados na mesma linha
             $mainAtlasLi.css({
             $mainAtlasLi.css({
                 'display': 'flex',
                 'display': 'flex',
                 'align-items': 'center',
                 'align-items': 'center'
                'justify-content': '间的'
             });
             });


             // 3. Cria e injeta a seta
             // 3. Cria a seta
             var $toggleBtn = $('<span class="atlas-toggle-btn" style="cursor:pointer; margin-left:8px; user-select:none;">▶</span>');
             var $toggleBtn = $('<span class="atlas-toggle-btn" style="cursor:pointer; margin-left:8px; user-select:none;">▶</span>');
             $mainAtlasLi.append($toggleBtn);
             $mainAtlasLi.append($toggleBtn);


             // 4. Lógica do clique
             // 4. Evento do clique
             $toggleBtn.on('click', function(e) {
             $toggleBtn.on('click', function(e) {
                 e.preventDefault();
                 e.preventDefault();
                 e.stopPropagation();
                 e.stopPropagation();
                  
                  
                // Abre/fecha as subpáginas
                 $('.atlas-submenu').toggleClass('is-open');
                 $('.atlas-submenu').toggleClass('is-open');
                  
                  
                // Roda a seta
                 if ($(this).text() === '▶') {
                 if ($(this).text() === '▶') {
                     $(this).text('▼');
                     $(this).text('▼');
Line 40: Line 45:
         }
         }
     }
     }
    // Executa imediatamente e também se houver mudanças na página
    $(document).ready(setupAtlasDropdown);
    $(window).on('load', setupAtlasDropdown);
});
});