MediaWiki:SupportPage.js: Difference between revisions

From Donate
Jump to navigation Jump to search
Content deleted Content added
rm Flickity, not using it any more
Tag: Replaced
add code to show language expander only if needed
Line 5: Line 5:


$(function() {
$(function() {

/* -- language bar code -- */
function showHideLanguageExpand() {
if ( $('.sp-languages ul').height() > $('.sp-languages').height() ) {
$('.sp-languages-expand').show();
} else {
$('.sp-languages-expand').hide();
}
}

showHideLanguageExpand();
$( window ).resize( showHideLanguageExpand );
/* -- end of language bar code -- */


/* -- table of contents code -- */
/* -- table of contents code -- */

Revision as of 16:07, 13 September 2018

/* 
 * 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 {
            $('.sp-languages-expand').hide();
        }
    }

    showHideLanguageExpand();
    $( window ).resize( showHideLanguageExpand );
    /* -- end of language bar 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 = 24, // 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);
            event.preventDefault();
        };
    for (var i = 0; i < toc.length; i++) {
        toc[i].link.on( 'click', toc[i], smoothScroll );
    }

    // Highlight current section in toc
    var lastSection;
    $(window).scroll(function() {
        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 ( lastSection !== currentSection ) {
            lastSection = currentSection;
            $('#toc > ul a').removeClass('-active');
            currentSection.link.addClass('-active');
        }
    });
    /* -- end of table of contents code -- */

});