MediaWiki:SupportPage.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/*
* MediaWiki:SupportPage.js
* Loaded by MediaWiki:Common.js on support pages e.g. "Problems donating"
*/
$(function() {
/* -- language bar code -- */
function showHideLanguageExpand() {
if ( $('.sp-languages ul').height() > $('.sp-languages').height() ) {
$('.sp-languages-expand').show();
} else if ( !$('.sp-languages').hasClass('-expanded') ) {
$('.sp-languages-expand').hide();
}
}
showHideLanguageExpand();
$( window ).resize( showHideLanguageExpand );
/* -- end of language bar code -- */
/* -- New language switcher code -- */
var languageSwitcherButton = document.querySelector('.language-switcher__button'),
languageSwitcherContent = document.querySelector('.language-switcher__content'),
languageSwitcherBackdrop = document.querySelector('[data-dropdown-backdrop]');
languageSwitcherButton.onclick = function() {
if ( languageSwitcherButton.ariaExpanded === 'true' ) {
hideLanguageSwitcher();
} else {
showLanguageSwitcher();
}
};
languageSwitcherBackdrop.onclick = hideLanguageSwitcher;
function showLanguageSwitcher() {
languageSwitcherButton.ariaExpanded = 'true';
languageSwitcherContent.hidden = false;
languageSwitcherBackdrop.dataset.dropdownBackdrop = 'active';
}
function hideLanguageSwitcher() {
languageSwitcherButton.ariaExpanded = 'false';
languageSwitcherContent.hidden = true;
languageSwitcherBackdrop.dataset.dropdownBackdrop = 'inactive';
}
/* -- End of new language switcher code -- */
/* -- table of contents code -- */
// Build a list of corresponding toc links and anchors
var toc = [];
$('#toc > ul a').each( function() {
var id = $(this).attr('href').replace('#', '');
toc.push({
link: $(this),
anchor: $( document.getElementById(id) )
});
});
// Add smooth scrolling effect
var scrollOffset = 88, // Offset in px
scrollDuration = 500, // in ms
smoothScroll = function(event) {
var offsetTop = event.data.anchor.offset().top;
$('html, body').stop().animate({
scrollTop: offsetTop - scrollOffset
}, scrollDuration);
window.location.hash = event.data.anchor.attr('id');
event.preventDefault();
};
for (var i = 0; i < toc.length; i++) {
toc[i].link.on( 'click', toc[i], smoothScroll );
}
// fix inbound fragment links
function delayedFragmentTargetOffset() {
var offset = $(':target').offset();
if (offset) {
var scrollto = offset.top - scrollOffset;
$('html, body').animate({ scrollTop: scrollto }, 0);
}
}
setTimeout(delayedFragmentTargetOffset, 200);
// Highlight current section in toc
var lastSection;
function scrollFunction() {
var fromTop = $(this).scrollTop(); // Get container scroll position
var currentSection = toc.filter(function(item) {
return fromTop > item.anchor.offset().top - 64;
});
currentSection = currentSection[currentSection.length - 1];
if ( currentSection && lastSection !== currentSection ) {
lastSection = currentSection;
$('#toc > ul a').removeClass('-active');
currentSection.link.addClass('-active');
}
if ( fromTop === 0 ) {
$('.sp-top-nav').removeClass('pinned');
} else {
$('.sp-top-nav').addClass('pinned');
}
}
scrollFunction();
$(window).scroll( scrollFunction );
/* -- end of table of contents code -- */
// Collapsible continents/countries on Ways to Give
mw.loader.using('jquery.makeCollapsible', function() {
$('.mw-collapsible').makeCollapsible();
});
});