Jump to content

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */


// ==========================================================================
    // DROPDOWNS AUTOMÁTICOS PARA TODOS OS SUB-HEADINGS
    // ==========================================================================
    var headingSelectors = 'h2, h3, h4, h5, h6';
    // Adiciona um ponteiro de rato e um indicador visual aos títulos para o utilizador saber que dão para clicar
    $(headingSelectors).filter(function() {
        // Ignora títulos nativos do sistema (como o título da página principal ou menus)
        return !$(this).parents('#mw-navigation, #footer, #custom-atronia-footer').length && this.id !== 'firstHeading';
    }).css('cursor', 'pointer').prepend('<span class="wiki-toggle-indicator">▼</span>');
    // Lógica do Clique para recolher/expandir o conteúdo
    $(headingSelectors).click(function() {
        var $currentHeading = $(this);
        var currentLevel = parseInt(this.tagName.substring(1)); // Extrai o número do heading (ex: H3 -> 3)
        var $indicator = $currentHeading.find('.wiki-toggle-indicator');
       
        // Alterna o estado visual da seta indicadora
        $indicator.toggleClass('collapsed');
        // Percorre todos os elementos seguintes (irmãos) no DOM
        $currentHeading.nextAll().each(function() {
            var $nextElement = $(this);
           
            // Se encontrar um cabeçalho...
            if ($nextElement.is(headingSelectors)) {
                var nextLevel = parseInt(this.tagName.substring(1));
                // Se o nível for igual ou superior (ex: H2 a encontrar outro H2, ou H3 a encontrar um H2), para o loop
                if (nextLevel <= currentLevel) {
                    return false; // Quebra o .each()
                }
            }
           
            // Alterna a visibilidade dos elementos de conteúdo pertencentes a esta secção
            $nextElement.toggleClass('wiki-heading-collapsed');
        });
    });