MediaWiki:Common.js: Difference between revisions
Appearance
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'); | |||
}); | |||
}); | |||