PageSourceSearch

https://citizenlab.ca/wp-content/plugins/plugin-citizenlab/blocks/home-slider/view.js?ver=7.1.2

js citizenlab.ca collected 2026-10-01 07:29:46 UTC 1,869 bytes, 54 lines download raw bytes

1/**
2 * Home Slider Frontend Script
3 * This script handles the frontend functionality for the home slider block.
4 */
5
6document.addEventListener('DOMContentLoaded', () => {
7    const sliders = document.querySelectorAll('.nua-block-home-slider');
8    
9    sliders.forEach((slider) => {
10        initializeDesktopSlider(slider);
11    });
12});
13
14/**
15 * Initialize desktop slider functionality
16 * @param {Element} slider - The slider container element
17 */
18function initializeDesktopSlider(slider) {
19    const desktopSlider = slider.querySelector('.nua-home-slider-desktop');
20    if (!desktopSlider) return;
21
22    const slideImages = desktopSlider.querySelectorAll('.nua-home-slider-desktop__slide-image');
23    const slideNavItems = desktopSlider.querySelectorAll('.nua-home-slider-desktop__slide');
24    
25    if (slideImages.length === 0 || slideNavItems.length === 0) return;
26
27    // Add click listeners to navigation items
28    slideNavItems.forEach((navItem) => {
29        navItem.addEventListener('click', () => {
30            const slideIndex = parseInt(navItem.dataset.slideIndex);
31            activateSlide(slideIndex, slideImages, slideNavItems);
32        });
33    });
34}
35
36/**
37 * Activate a specific slide
38 * @param {number} index - The index of the slide to activate
39 * @param {NodeList} slideImages - All slide images
40 * @param {NodeList} slideNavItems - All navigation items
41 */
42function activateSlide(index, slideImages, slideNavItems) {
43    // Remove active class from all images and nav items
44    slideImages.forEach((img) => img.classList.remove('active'));
45    slideNavItems.forEach((nav) => nav.classList.remove('active'));
46    
47    // Add active class to current slide image and nav item
48    if (slideImages[index]) {
49        slideImages[index].classList.add('active');
50    }
51    if (slideNavItems[index]) {
52        slideNavItems[index].classList.add('active');
53    }
54}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.