PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.5.0
Easy Elements for Elementor – Addons & Website Templates v1.5.0
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 All 47 releases
easy-elements / widgets / countdown / js / countdown.js

countdown.js in Easy Elements for Elementor – Addons & Website Templates 1.5.0, at widgets/countdown/js/countdown.js

55 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function ($) {
2 "use strict";
3
4 window.initCountdown = function($scope, $) {
5 // Use $scope to find element inside editor iframe
6 const countdownWrapper = $scope.find('#eel-countdowns')[0] || document.getElementById('eel-countdowns');
7 if (!countdownWrapper) return;
8
9 const targetDateStr = countdownWrapper.dataset.target;
10 const countDownDate = new Date(targetDateStr).getTime();
11 if (isNaN(countDownDate)) return;
12
13 const second = 1000,
14 minute = second * 60,
15 hour = minute * 60,
16 day = hour * 24;
17
18 const daysEl = countdownWrapper.querySelector('.eel-cntdwn-days');
19 const hoursEl = countdownWrapper.querySelector('.eel-cntdwn-hours');
20 const minutesEl = countdownWrapper.querySelector('.eel-cntdwn-minutes');
21 const secondsEl = countdownWrapper.querySelector('.eel-cntdwn-seconds');
22
23 if (!daysEl || !hoursEl || !minutesEl || !secondsEl) return;
24
25 function updateCountdown() {
26 const now = new Date().getTime();
27 const distance = countDownDate - now;
28
29 if (distance <= 0) {
30 countdownWrapper.innerHTML = "Countdown Finished!";
31 clearInterval(intervalId);
32 return;
33 }
34
35 daysEl.textContent = Math.floor(distance / day);
36 hoursEl.textContent = Math.floor((distance % day) / hour);
37 minutesEl.textContent = Math.floor((distance % hour) / minute);
38 secondsEl.textContent = Math.floor((distance % minute) / second);
39 }
40
41 updateCountdown();
42 const intervalId = setInterval(updateCountdown, 1000);
43 };
44
45 // Elementor hook (editor + frontend)
46 jQuery(window).on('elementor/frontend/init', function () {
47 elementorFrontend.hooks.addAction('frontend/element_ready/global', function($scope, $){
48 if (typeof window.initCountdown === 'function') {
49 window.initCountdown($scope, $);
50 }
51 });
52 });
53
54 })(jQuery);
55