in src/scripts/blocks/quotes.js [44:100]
export default function initialize({
containerClass = 'js--fade-slider',
slideClass = 'js--fade-slider__slide',
slideActiveClass = 'js--fade-slider__slide--active',
linkClass = 'js--fade-slider__nav-link',
linkActiveClass = 'js--fade-slider__nav--active',
timeoutInterval = 3000,
} = {}) {
const container = document.querySelector(`.${containerClass}`);
if (!container) {
return;
}
// Alias these functions and bind the container for brevity.
const setClass = impure.setClassBySelector.bind(null, container);
const removeClassFromAll = impure.removeClassFromAll.bind(null, container);
const startLoop = impure.startInterval.bind(
null,
container,
slideClass,
slideActiveClass,
linkClass,
linkActiveClass,
timeoutInterval
);
let looper = startLoop();
// Find the first slide and nav item and activates them.
setClass(`.${slideClass}`, slideActiveClass);
setClass(`.${linkClass}`, linkActiveClass);
// Add a click handler for the nav.
container.addEventListener('click', event => {
if (event.target.classList.contains(linkClass)) {
const targetSlideId = event.target.href.split('#')[1];
if (targetSlideId) {
event.preventDefault();
// Reset the active classes on slides and nav links.
removeClassFromAll(`.${slideClass}`, slideActiveClass);
removeClassFromAll(`.${linkClass}`, linkActiveClass);
// Add active classes to the selected slide and nav link.
setClass(`#${targetSlideId}`, slideActiveClass);
setClass(`a[href="#${targetSlideId}"]`, linkActiveClass);
// Restart the interval.
clearInterval(looper);
looper = startLoop();
}
}
});
}