# king-addons/51.1.49/includes/widgets/Quick_Card_Slider/script.js

King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder, version 51.1.49. 101 lines.

- Page: https://pluginprobe.com/plugins/king-addons/51.1.49/code/includes/widgets/Quick_Card_Slider/script.js
- Raw: https://pluginprobe.com/plugins/king-addons/51.1.49/raw/includes/widgets/Quick_Card_Slider/script.js
- Modified: 2026-01-06T16:52:16+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/king-addons/51.1.49/code/includes/widgets/Quick_Card_Slider/script.js#L10-L20`.

```javascript
"use strict";

(function ($) {
    const parseNumber = (value, fallback) => {
        const number = parseInt(value, 10);
        return Number.isFinite(number) ? number : fallback;
    };

    const initCardSlider = ($scope) => {
        const container = $scope[0]?.querySelector(".king-addons-card-slider__track");

        if (!container || typeof Swiper === "undefined") {
            return;
        }

        const settings = container.dataset;

        const slidesPerView = parseNumber(settings.slidesPerView, 1);
        const slidesPerViewTablet = parseNumber(settings.slidesPerViewTablet, slidesPerView);
        const slidesPerViewMobile = parseNumber(settings.slidesPerViewMobile, slidesPerViewTablet);
        const spaceBetween = parseNumber(settings.spaceBetween, 20);
        const speed = parseNumber(settings.speed, 600);

        const config = {
            slidesPerView: slidesPerView,
            spaceBetween: spaceBetween,
            speed: speed,
            loop: settings.loop === "yes",
            breakpoints: {
                0: { slidesPerView: slidesPerViewMobile },
                768: { slidesPerView: slidesPerViewTablet },
                1024: { slidesPerView: slidesPerView },
            },
        };

        if (settings.autoplay === "yes") {
            config.autoplay = {
                delay: parseNumber(settings.autoplayDelay, 3200),
                disableOnInteraction: false,
            };
        }

        if (settings.pagination === "yes") {
            config.pagination = {
                el: container.querySelector(".king-addons-card-slider__pagination"),
                clickable: true,
            };
        }

        if (settings.navigation === "yes") {
            config.navigation = {
                nextEl: $scope[0].querySelector(".king-addons-card-slider__arrow--next"),
                prevEl: $scope[0].querySelector(".king-addons-card-slider__arrow--prev"),
            };
        }

        const isEditMode = elementorFrontend.isEditMode();
        const swiperInstance = new Swiper(container, config); // eslint-disable-line no-new

        // Card-level link handling: only bind on frontend to avoid blocking editor selection.
        if (!isEditMode) {
            const slides = $scope[0].querySelectorAll(".king-addons-card-slider__slide[data-card-link]");
            slides.forEach((slide) => {
                slide.addEventListener("click", (event) => {
                    // If clicking a real link inside, respect that link.
                    if (event.target.closest("a")) {
                        return;
                    }

                    const url = slide.dataset.cardLink;
                    if (!url) {
                        return;
                    }

                    const target = slide.dataset.cardLinkTarget || "_self";
                    window.open(url, target);
                });
            });
        }

        return swiperInstance;
    };

    $(window).on("elementor/frontend/init", function () {
        elementorFrontend.hooks.addAction(
            "frontend/element_ready/king-addons-quick-card-slider.default",
            function ($scope) {
                initCardSlider($scope);
            }
        );
    });
})(jQuery);









```
