MediaWiki:CarouselArrows.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.
$(function() {
    var carousel = document.getElementById('collection-carousel');
    var leftArrow = document.getElementById('scroll-left');
    var rightArrow = document.getElementById('scroll-right');

    if (carousel && leftArrow && rightArrow) {
        function updateArrows() {
            var maxScroll = carousel.scrollWidth - carousel.clientWidth;
            
            if (carousel.scrollLeft <= 0) {
                leftArrow.style.opacity = '0';
                leftArrow.style.pointerEvents = 'none';
            } else {
                leftArrow.style.opacity = '1';
                leftArrow.style.pointerEvents = 'auto';
            }

            if (carousel.scrollLeft >= maxScroll - 1) {
                rightArrow.style.opacity = '0';
                rightArrow.style.pointerEvents = 'none';
            } else {
                rightArrow.style.opacity = '1';
                rightArrow.style.pointerEvents = 'auto';
            }
        }

        leftArrow.addEventListener('click', function() {
            carousel.scrollBy({ left: -320, behavior: 'smooth' });
        });
        
        rightArrow.addEventListener('click', function() {
            carousel.scrollBy({ left: 320, behavior: 'smooth' });
        });

        carousel.addEventListener('scroll', updateArrows);
        window.addEventListener('resize', updateArrows);

        setTimeout(updateArrows, 100);
    }
});