PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.49
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.49
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 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / widgets / Content_Ticker / script.js

script.js in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.49, at includes/widgets/Content_Ticker/script.js

129 lines 7.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 "use strict";
2 (function ($) {
3 $(window).on("elementor/frontend/init", function () {
4 elementorFrontend.hooks.addAction(
5 "frontend/element_ready/king-addons-content-ticker.default",
6 function ($scope) {
7 // Register a new handler extending Elementor’s Base handler
8 elementorFrontend.elementsHandler.addHandler(
9 elementorModules.frontend.handlers.Base.extend({
10 onInit() {
11 const $element = this.$element;
12
13 const $contentTickerSlider = $element.find(".king-addons-ticker-slider"),
14 $contentTickerMarquee = $element.find(".king-addons-ticker-marquee"),
15 marqueeData = $contentTickerMarquee.data("options"),
16 sliderClass = $element.attr("class"),
17 dataSlideEffect = $contentTickerSlider.attr("data-slide-effect");
18
19 // Helper to capture a single digit at the end of a matched pattern
20 const getClassNumber = (regex, fallback) => {
21 const match = sliderClass.match(regex);
22 return match ? parseInt(match[1], 10) : fallback;
23 };
24
25 // Determine how many columns to use in different breakpoints
26 const sliderColumnsDesktop = getClassNumber(/king-addons-ticker-slider-columns-(\d)/, 2);
27 const sliderColumnsWideScreen = getClassNumber(/columns--widescreen(\d)/, sliderColumnsDesktop);
28 const sliderColumnsLaptop = getClassNumber(/columns--laptop(\d)/, sliderColumnsDesktop);
29 const sliderColumnsTablet = getClassNumber(/columns--tablet(\d)/, 2);
30 const sliderColumnsTabletExtra = getClassNumber(/columns--tablet_extra(\d)/, sliderColumnsTablet);
31 const sliderColumnsMobileExtra = getClassNumber(/columns--mobile_extra(\d)/, sliderColumnsTablet);
32 const sliderColumnsMobile = getClassNumber(/columns--mobile(\d)/, 1);
33
34 // Slides to scroll logic if the slider effect is "hr-slide"
35 const sliderSlidesToScroll =
36 dataSlideEffect === "hr-slide"
37 ? getClassNumber(/king-addons-ticker-slides-to-scroll-(\d)/, 1)
38 : 1;
39
40 // Check if slide effect is typing or fade
41 const isTypingOrFade = dataSlideEffect === "typing" || dataSlideEffect === "fade";
42
43 // Short helper to decide slidesToShow and slidesToScroll
44 const getSlidesToShow = columns => (isTypingOrFade ? 1 : columns);
45 const getSlidesToScroll = columns => (sliderSlidesToScroll > columns ? 1 : sliderSlidesToScroll);
46
47 // Slick settings with breakpoints
48 $contentTickerSlider.slick({
49 appendArrows: $element.find(".king-addons-ticker-slider-controls"),
50 slidesToShow: sliderColumnsDesktop,
51 responsive: [
52 {
53 breakpoint: 10000,
54 settings: {
55 slidesToShow: getSlidesToShow(sliderColumnsWideScreen),
56 slidesToScroll: getSlidesToScroll(sliderColumnsWideScreen),
57 fade: isTypingOrFade,
58 },
59 },
60 {
61 breakpoint: 2399,
62 settings: {
63 slidesToShow: getSlidesToShow(sliderColumnsDesktop),
64 slidesToScroll: getSlidesToScroll(sliderColumnsDesktop),
65 fade: isTypingOrFade,
66 },
67 },
68 {
69 breakpoint: 1221,
70 settings: {
71 slidesToShow: getSlidesToShow(sliderColumnsLaptop),
72 slidesToScroll: getSlidesToScroll(sliderColumnsLaptop),
73 fade: isTypingOrFade,
74 },
75 },
76 {
77 breakpoint: 1200,
78 settings: {
79 slidesToShow: getSlidesToShow(sliderColumnsTabletExtra),
80 slidesToScroll: getSlidesToScroll(sliderColumnsTabletExtra),
81 fade: isTypingOrFade,
82 },
83 },
84 {
85 breakpoint: 1024,
86 settings: {
87 slidesToShow: getSlidesToShow(sliderColumnsTablet),
88 slidesToScroll: getSlidesToScroll(sliderColumnsTablet),
89 fade: isTypingOrFade,
90 },
91 },
92 {
93 breakpoint: 880,
94 settings: {
95 slidesToShow: getSlidesToShow(sliderColumnsMobileExtra),
96 slidesToScroll: getSlidesToScroll(sliderColumnsMobileExtra),
97 fade: isTypingOrFade,
98 },
99 },
100 {
101 breakpoint: 768,
102 settings: {
103 slidesToShow: getSlidesToShow(sliderColumnsMobile),
104 slidesToScroll: getSlidesToScroll(sliderColumnsMobile),
105 fade: isTypingOrFade,
106 },
107 },
108 ],
109 });
110
111 // Initialize marquee
112 $contentTickerMarquee.marquee(marqueeData);
113
114 // If marquee is hidden, remove the hidden class
115 if ($element.find(".king-addons-marquee-hidden").length) {
116 $element
117 .find(".king-addons-ticker-marquee")
118 .removeClass("king-addons-marquee-hidden");
119 }
120 },
121 }),
122 {
123 $element: $scope,
124 }
125 );
126 }
127 );
128 });
129 })(jQuery);