PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.86
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.86
51.1.86 51.1.84 51.1.85 51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 All 40 releases
← All changes | includes/widgets/Quick_Card_Slider/script.js +54 -27 51.1.44 → 51.1.86 View file →
@@ -13,20 +13,24 @@
13 13 return;
14 14 }
15 15
16 16 const settings = container.dataset;
17 -
18 17 const slidesPerView = parseNumber(settings.slidesPerView, 1);
19 18 const slidesPerViewTablet = parseNumber(settings.slidesPerViewTablet, slidesPerView);
20 19 const slidesPerViewMobile = parseNumber(settings.slidesPerViewMobile, slidesPerViewTablet);
21 20 const spaceBetween = parseNumber(settings.spaceBetween, 20);
22 21 const speed = parseNumber(settings.speed, 600);
22 + const autoplay = settings.autoplay === "yes";
23 + const autoplayDelay = parseNumber(settings.autoplayDelay, 3200);
24 + const loop = settings.loop === "yes";
25 + const showPagination = settings.pagination === "yes";
26 + const showNav = settings.navigation === "yes";
23 27
24 28 const config = {
25 29 slidesPerView: slidesPerView,
26 30 spaceBetween: spaceBetween,
27 31 speed: speed,
28 - loop: settings.loop === "yes",
32 + loop: loop,
29 33 breakpoints: {
30 34 0: { slidesPerView: slidesPerViewMobile },
31 35 768: { slidesPerView: slidesPerViewTablet },
32 36 1024: { slidesPerView: slidesPerView },
@@ -32,16 +36,17 @@
32 36 1024: { slidesPerView: slidesPerView },
33 37 },
34 38 };
35 39
36 - if (settings.autoplay === "yes") {
40 + if (autoplay) {
37 41 config.autoplay = {
38 - delay: parseNumber(settings.autoplayDelay, 3200),
42 + delay: autoplayDelay,
39 43 disableOnInteraction: false,
44 + pauseOnMouseEnter: true,
40 45 };
41 46 }
42 47
43 - if (settings.pagination === "yes") {
48 + if (showPagination) {
44 49 config.pagination = {
45 50 el: container.querySelector(".king-addons-card-slider__pagination"),
46 51 clickable: true,
47 52 };
@@ -46,9 +51,9 @@
46 51 clickable: true,
47 52 };
48 53 }
49 54
50 - if (settings.navigation === "yes") {
55 + if (showNav) {
51 56 config.navigation = {
52 57 nextEl: $scope[0].querySelector(".king-addons-card-slider__arrow--next"),
53 58 prevEl: $scope[0].querySelector(".king-addons-card-slider__arrow--prev"),
54 59 };
@@ -53,33 +58,59 @@
53 58 prevEl: $scope[0].querySelector(".king-addons-card-slider__arrow--prev"),
54 59 };
55 60 }
56 61
57 - const isEditMode = elementorFrontend.isEditMode();
58 - const swiperInstance = new Swiper(container, config); // eslint-disable-line no-new
62 + // eslint-disable-next-line no-new
63 + const swiper = new Swiper(container, config);
59 64
60 65 // Card-level link handling: only bind on frontend to avoid blocking editor selection.
66 + const isEditMode = elementorFrontend.isEditMode();
61 67 if (!isEditMode) {
62 - const slides = $scope[0].querySelectorAll(".king-addons-card-slider__slide[data-card-link]");
63 - slides.forEach((slide) => {
64 - slide.addEventListener("click", (event) => {
65 - // If clicking a real link inside, respect that link.
66 - if (event.target.closest("a")) {
67 - return;
68 + const openCardLink = (slide) => {
69 + const url = slide.dataset.cardLink;
70 + if (!url) {
71 + return;
72 + }
73 +
74 + const target = slide.dataset.cardLinkTarget || "_self";
75 + if (target === "_blank") {
76 + const newWindow = window.open(url, "_blank", "noopener");
77 + if (newWindow) {
78 + newWindow.opener = null;
68 79 }
80 + return;
81 + }
69 82
70 - const url = slide.dataset.cardLink;
71 - if (!url) {
72 - return;
73 - }
83 + window.location.href = url;
84 + };
74 85
75 - const target = slide.dataset.cardLinkTarget || "_self";
76 - window.open(url, target);
77 - });
86 + container.addEventListener("click", (event) => {
87 + const slide = event.target.closest(".king-addons-card-slider__slide[data-card-link]");
88 + if (!slide) {
89 + return;
90 + }
91 +
92 + if (event.target.closest("a")) {
93 + return;
94 + }
95 +
96 + openCardLink(slide);
78 97 });
98 +
99 + container.addEventListener("keydown", (event) => {
100 + if (event.key !== "Enter" && event.key !== " " && event.key !== "Spacebar" && event.key !== "Space") {
101 + return;
102 + }
103 +
104 + const slide = event.target.closest(".king-addons-card-slider__slide[data-card-link]");
105 + if (!slide || event.target !== slide) {
106 + return;
107 + }
108 +
109 + event.preventDefault();
110 + openCardLink(slide);
111 + });
79 112 }
80 -
81 - return swiperInstance;
82 113 };
83 114
84 115 $(window).on("elementor/frontend/init", function () {
85 116 elementorFrontend.hooks.addAction(
@@ -89,12 +120,8 @@
89 120 }
90 121 );
91 122 });
92 123 })(jQuery);
93 -
94 -
95 -
96 -
97 124
98 125
99 126
100 127