PluginProbe ʕ •ᴥ•ʔ
Spider Elements – Premium Elementor Widgets & Addons Library / 1.1.0
Spider Elements – Premium Elementor Widgets & Addons Library v1.1.0
trunk 1.0.0 1.1.0 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.7.0 1.8.0 1.9.0
spider-elements / assets / js / elementor-widgets.js
spider-elements / assets / js Last commit date
admin.js 2 years ago ajax-chimp.js 2 years ago elementor-widgets.js 2 years ago scripts.js 2 years ago
elementor-widgets.js
773 lines
1 (function ($, elementor) {
2 "use strict";
3
4 const $window = $(elementor);
5
6 const spiderElements = {
7 onInit: function () {
8 const E_FRONT = elementorFrontend;
9 const widgetHandlersMap = {
10 "landpagy_pricing_table_tabs.default": spiderElements.pricing_table_tabs,
11 "docy_tabs.default": spiderElements.tabs,
12 "docy_testimonial.default": spiderElements.testimonial,
13 "docly_alerts_box.default": spiderElements.alertBox,
14 "docy_videos_playlist.default": spiderElements.videoPlaylist,
15 "docy_team_carousel.default": spiderElements.teamslider,
16 "spe_after_before_widget.default": spiderElements.beforeAfter,
17 "docy_video_popup.default": spiderElements.videoPopup,
18 "spe_marquee_slides.default": spiderElements.marquee,
19 "spe_instagram.default": spiderElements.instagramFeed,
20 "spel_accordion.default": spiderElements.accordions,
21 "docly_cheatsheet.default": spiderElements.cheatsheet,
22 "docy_blog_grid.default": spiderElements.blogGrid,
23 };
24
25 $.each(widgetHandlersMap, function (widgetName, callback) {
26 E_FRONT.hooks.addAction(
27 "frontend/element_ready/" + widgetName,
28 callback
29 );
30 });
31 },
32
33 //======================== Blog Grid =========================== //
34 blogGrid: function ($scope) {
35
36
37 let blogGrid = $scope.find(".category-slider-one");
38
39 if (blogGrid.length > 0) {
40 blogGrid.slick({
41 dots: false,
42 arrows: true,
43 lazyLoad: 'ondemand',
44 prevArrow: $('.prev_d'),
45 nextArrow: $('.next_d'),
46 centerPadding: '0px',
47 slidesToShow: 4,
48 slidesToScroll: 1,
49 autoplay: true,
50 autoplaySpeed: 3000,
51 responsive: [
52 {
53 breakpoint: 992,
54 settings: {
55 slidesToShow: 3
56 }
57 },
58 {
59 breakpoint: 768,
60 settings: {
61 slidesToShow: 2
62 }
63 },
64 {
65 breakpoint: 576,
66 settings: {
67 slidesToShow: 1
68 }
69 }
70 ]
71 });
72 }
73
74 },
75
76
77 /*============ cheatsheet js ==============*/
78 cheatsheet: function ($scope) {
79 let cheatsht = $scope.find(".card-header button");
80 cheatsht.on("click", function (event) {
81 event.preventDefault(); // This line should prevent the default behavior
82 var $this = $(this);
83 var $parent = $this.parents();
84 var $collapses = $parent.find("> .collapse").first();
85 $(this).toggleClass("active");
86 $collapses.slideToggle(300);
87 return false;
88 });
89 },
90
91 //=============== accordion js ===============//
92
93 accordions: function ($scope) {
94 let speAccordion = $scope.find(".spe_accordion_inner > .spe-accordion");
95 speAccordion.on("click", function () {
96 var $this = $(this);
97 var $parent = $this.parent();
98 var $collapse = $parent.find("> .collapse").first();
99
100 $collapse.slideToggle(300);
101 $parent.siblings().find("> .collapse").hide(300);
102
103 if ($parent.hasClass("spe-collapsed")) {
104 $parent.removeClass("spe-collapsed");
105 } else {
106 speAccordion.parent().removeClass("spe-collapsed");
107 $parent.addClass("spe-collapsed");
108 }
109
110 return false;
111 });
112 },
113
114 //======================== Instagram Feed =========================== //
115 instagramFeed: function ($scope) {
116 let instagramFeed = $scope.find(".instagram-feed-active");
117
118 if (instagramFeed.length > 0) {
119 var portfolio = new Swiper(".instagram-feed-active", {
120 slidesPerView: 1,
121 spaceBetween: 24,
122 loop: true,
123 navigation: {
124 nextEl: ".swiper-button-next",
125 prevEl: ".swiper-button-prev",
126 },
127 breakpoints: {
128 480: {
129 slidesPerView: 2,
130 },
131 768: {
132 slidesPerView: 3,
133 },
134 992: {
135 slidesPerView: 4,
136 },
137 1200: {
138 slidesPerView: 5,
139 },
140 },
141 });
142 }
143 },
144
145 //============================== Start Marquee =============================//
146 marquee: function ($scope) {
147 let left_slides = $scope.find(".branding-slider");
148 let right_slides = $scope.find(".branding-reverse-slider");
149
150 if (left_slides.length > 0) {
151 left_slides.slick({
152 autoplay: true,
153 infinite: true,
154 slidesToShow: 3,
155 slidesToScroll: 1,
156 dots: false,
157 speed: 5000,
158 prevArrow: false,
159 nextArrow: false,
160 pauseOnHover: false,
161 cssEase: "linear",
162 autoplaySpeed: 10,
163 responsive: [
164 {
165 breakpoint: 765,
166 settings: {
167 slidesToShow: 2,
168 },
169 },
170 {
171 breakpoint: 576,
172 settings: {
173 slidesToShow: 1,
174 },
175 },
176 ],
177 });
178 }
179
180 if (right_slides.length > 0) {
181 right_slides.slick({
182 autoplay: true,
183 infinite: true,
184 rtl: true,
185 slidesToShow: 3,
186 slidesToScroll: 1,
187 dots: false,
188 prevArrow: false,
189 nextArrow: false,
190 speed: 5000,
191 pauseOnHover: false,
192 cssEase: "linear",
193 autoplaySpeed: 10,
194 responsive: [
195 {
196 breakpoint: 765,
197 settings: {
198 slidesToShow: 2,
199 },
200 },
201 {
202 breakpoint: 576,
203 settings: {
204 slidesToShow: 1,
205 },
206 },
207 ],
208 });
209 }
210 }, // End Marquee
211
212 //============================== Start Before After =============================//
213 beforeAfter: function ($scope) {
214 let beforeAfter = $scope.find(".beforeAfter");
215
216 if (beforeAfter.length > 0) {
217 beforeAfter.beforeAfter({
218 movable: true,
219 clickMove: true,
220 position: 49.65,
221 separatorColor: "#fafafa",
222 bulletColor: "#fff",
223 });
224 }
225 }, //End Before After
226
227 //============================== Video Popup =============================//
228 videoPopup: function ($scope) {
229 let fancy = $scope.find(".fancybox");
230 if (fancy.length) {
231 fancy.fancybox({
232 arrows: true,
233 buttons: [
234 "zoom",
235 //"share",
236 "slideShow",
237 //"fullScreen",
238 //"download",
239 "thumbs",
240 "close",
241 ],
242 animationEffect: "zoom-in-out",
243 transitionEffect: "zoom-in-out",
244 });
245 }
246
247 // Layout 03
248 let textElement = document.querySelector(".btn-circle .text p");
249 if (textElement) {
250 textElement.innerHTML = textElement.innerText // Split the text into characters and apply rotation to each character
251 .split("")
252 .map(
253 (char, i) =>
254 `<span style="transform:rotate(${i * 9.5}deg)">${char}</span>`
255 )
256 .join("");
257 }
258 }, //End Video Popup
259
260 //============================== Team Slider =============================//
261 teamslider: function ($scope) {
262 let teamSlider = $scope.find(".expert-slider-one");
263 if (teamSlider.length) {
264 teamSlider.slick({
265 arrows: true,
266 lazyLoad: "ondemand",
267 prevArrow: $(".prev_a"),
268 nextArrow: $(".next_a"),
269 centerPadding: "0px",
270 slidesToShow: 4,
271 slidesToScroll: 1,
272 autoplay: true,
273 autoplaySpeed: 3000,
274 responsive: [
275 {
276 breakpoint: 1200,
277 settings: {
278 slidesToShow: 3,
279 },
280 },
281 {
282 breakpoint: 768,
283 settings: {
284 slidesToShow: 2,
285 },
286 },
287 ],
288 });
289 }
290
291 if ($(".expert-slider-two").length) {
292 $(".expert-slider-two").slick({
293 dots: true,
294 arrows: false,
295 lazyLoad: "ondemand",
296 centerPadding: "0px",
297 slidesToShow: 4,
298 slidesToScroll: 2,
299 autoplay: false,
300 autoplaySpeed: 3000,
301 responsive: [
302 {
303 breakpoint: 1200,
304 settings: {
305 slidesToShow: 3,
306 },
307 },
308 {
309 breakpoint: 992,
310 settings: {
311 slidesToShow: 2,
312 },
313 },
314 {
315 breakpoint: 576,
316 settings: {
317 slidesToShow: 1,
318 },
319 },
320 ],
321 });
322 }
323 }, //End Team Slider
324
325 //============================== Video Playlist =============================//
326 videoPlaylist: function ($scope) {
327 let video = $scope.find("#video_0");
328 setTimeout(function () {
329 $(".video_slider_area").addClass("loaded").css("height", "auto");
330 }, 3000);
331
332 video.addClass("show").addClass("active");
333 let containers = document.getElementsByClassName("artplayer-app");
334 if (containers.length > 0) {
335 for (var i = 0; i < containers.length; i++) {
336 new Artplayer({
337 container: containers[i],
338 url: containers[i].getAttribute("data-src"),
339 title: "Your Name",
340 pip: true,
341 screenshot: true,
342 flip: true,
343 fullscreen: true,
344 fullscreenWeb: true,
345 height: "500px",
346 });
347 }
348 }
349 },
350
351 //======================== Alert Box =========================== //
352 alertBox: function ($scope) {
353 $(".message_alert button.close").click(function () {
354 let btnId = $(this).attr("data-id");
355 $(".message_alert[data-id=" + btnId + "]").fadeOut();
356 });
357 },
358
359 //======================== Testimonial =========================== //
360 testimonial: function ($scope) {
361 let testimonialSlider = $scope.find(".doc_testimonial_slider");
362 let imageSlider = $scope.find(".doc_img_slider");
363
364 // Testi
365 if (testimonialSlider.length > 0) {
366 testimonialSlider.slick({
367 autoplay: true,
368 slidesToShow: 1,
369 slidesToScroll: 1,
370 autoplaySpeed: 2000,
371 speed: 2000,
372 dots: true,
373 arrows: false,
374 asNavFor: imageSlider, //.doc_img_slider class
375 });
376 imageSlider.slick({
377 slidesToShow: 1,
378 slidesToScroll: 1,
379 asNavFor: testimonialSlider, //.doc_testimonial_slider class
380 arrows: false,
381 fade: true,
382 focusOnSelect: true,
383 });
384 }
385
386 let feedbackSlider = $scope.find(".doc_feedback_slider");
387 if (feedbackSlider.length > 0) {
388 feedbackSlider.slick({
389 autoplay: true,
390 slidesToShow: 1,
391 slidesToScroll: 1,
392 autoplaySpeed: 2000,
393 speed: 1000,
394 dots: false,
395 arrows: true,
396 prevArrow: ".prev",
397 nextArrow: ".next",
398 });
399 }
400
401 // Testimonial Style 3
402 let testimonialSliderInner = $scope.find(".testimonial-slider-inner");
403 if (testimonialSliderInner.length > 0) {
404 var Testimonial = new Swiper(".testimonial-slider-inner", {
405 slidesPerView: 1,
406 spaceBetween: 10,
407 // speed: 500,
408 // effect: 'fade',
409 loop: true,
410 navigation: {
411 nextEl: ".swiper-button-next",
412 prevEl: ".swiper-button-prev",
413 },
414 });
415 }
416
417 // Testimonial Style 4
418 let testimonialSlide4 = $scope.find(".testimonial-slide-4");
419 if (testimonialSlide4.length > 0) {
420 var swiper4 = new Swiper(".testimonial-slide-4", {
421 spaceBetween: 10,
422 loop: true,
423 navigation: false,
424 breakpoints: {
425 768: {
426 navigation: {
427 nextEl: ".swiper-button-next",
428 prevEl: ".swiper-button-prev",
429 },
430 },
431 },
432 });
433 }
434
435 // Testimonial Style 5
436 let testimonialSliderActive = $scope.find(".testimonial-slider-active");
437 if (testimonialSliderActive.length > 0) {
438 var swiper5 = new Swiper(".testimonial-slider-active", {
439 slidesPerView: 1,
440 spaceBetween: 24,
441 grabCursor: true,
442 loop: true,
443 speed: 500,
444 navigation: {
445 nextEl: ".swiper-button-next",
446 prevEl: ".swiper-button-prev",
447 },
448 breakpoints: {
449 576: {
450 slidesPerView: 2,
451 },
452 1200: {
453 slidesPerView: 4,
454 },
455 },
456 });
457 }
458
459 let testimonial6 = $scope.find(".feedback-slider-one");
460 if (testimonial6.length > 0) {
461 testimonial6.each(function () {
462 $(this).slick({
463 dots: false,
464 arrows: true,
465 lazyLoad: "ondemand",
466 prevArrow: $(this).parent().find(".prev_f"),
467 nextArrow: $(this).parent().find(".next_f"),
468 centerPadding: "0px",
469 slidesToShow: 2,
470 slidesToScroll: 1,
471 autoplay: true,
472 autoplaySpeed: 3000000,
473 responsive: [
474 {
475 breakpoint: 768,
476 settings: {
477 slidesToShow: 1,
478 },
479 },
480 ],
481 });
482 });
483 }
484
485 // feedback-slider-two slider js
486 let testimonial8 = $scope.find(".feedback-slider-two");
487 if (testimonial8.length) {
488 testimonial8.slick({
489 dots: true,
490 arrows: false,
491 lazyLoad: "ondemand",
492 centerPadding: "0px",
493 slidesToShow: 3,
494 slidesToScroll: 1,
495 autoplay: true,
496 autoplaySpeed: 300000,
497 responsive: [
498 {
499 breakpoint: 768,
500 settings: {
501 slidesToShow: 2,
502 },
503 },
504 {
505 breakpoint: 576,
506 settings: {
507 slidesToShow: 1,
508 },
509 },
510 ],
511 });
512 }
513
514 let testimonial10_a = $scope.find(".feedback-slider-three-a");
515 let testimonial10_b = $scope.find(".feedback-slider-three-b");
516
517
518 if (testimonial10_a.length > 0) {
519 testimonial10_a.slick({
520 dots: false,
521 arrows: true,
522 prevArrow: $('.prev_d'),
523 nextArrow: $('.next_d'),
524 lazyLoad: 'ondemand',
525 centerPadding: '0px',
526 slidesToShow: 1,
527 slidesToScroll: 1,
528 autoplay: true,
529 fade: true,
530 autoplaySpeed: 300000,
531 asNavFor: '.feedback-slider-three-b',
532 });
533 }
534
535 if (testimonial10_b.length > 0 ) {
536 testimonial10_b.slick({
537 dots: true,
538 arrows: false,
539 lazyLoad: 'ondemand',
540 centerPadding: '0px',
541 slidesToShow: 3,
542 slidesToScroll: 1,
543 autoplay: true,
544 autoplaySpeed: 300000,
545 asNavFor: '.feedback-slider-three-a',
546 responsive: [
547 {
548 breakpoint: 992,
549 settings: {
550 slidesToShow: 2
551 }
552 },
553 {
554 breakpoint: 576,
555 settings: {
556 slidesToShow: 1
557 }
558 }
559 ]
560 });
561 }
562
563
564
565
566 // Testimonial Style 11
567 let testimonial11 = $scope.find(".testimonial-slider");
568 if (testimonial11.length) {
569 testimonial11.slick({
570 autoplay: true,
571 infinite: true,
572 slidesToShow: 1,
573 slidesToScroll: 1,
574 dots: false,
575 arrows: true,
576 nextArrow: '<div class="next"><span class="arrow"></span></div>',
577 });
578
579 var getSlickItem = $(".testimonial-slider").slick("getSlick");
580 if (getSlickItem.currentSlide < 9) {
581 $(".current_slide").text(`0${getSlickItem.currentSlide + 1}`);
582 } else {
583 $(".current_slide").text(getSlickItem.currentSlide + 1);
584 }
585 if (getSlickItem.getDotCount() < 9) {
586 $(".total_slide").text(`0${getSlickItem.getDotCount() + 1}`);
587 } else {
588 $(".total_slide").text(getSlickItem.getDotCount() + 1);
589 }
590
591 $(".testimonial-slider").on(
592 "beforeChange",
593 function (event, slick, currentSlide, nextSlide) {
594 if (nextSlide < 9) {
595 $(".current_slide").text(`0${nextSlide + 1}`);
596 } else {
597 $(".current_slide").text(nextSlide + 1);
598 }
599 }
600 );
601 }
602 },
603
604 //======================== Tabs =========================== //
605 tabs: function ($scope) {
606
607 let nextBtn = $scope.find("button.ezd_tab_arrow_btn.nexts");
608 let prevBtn = $scope.find("button.ezd_tab_arrow_btn.previous");
609
610 if (nextBtn.length > 0) {
611 nextBtn.on("click", function () {
612 let activeTab = $scope.find("ul.nav-tabs .nav-item > .active");
613 let nextTab = activeTab.parent().next("li").find(".tab-item-title");
614 nextTab.trigger("click");
615 });
616 }
617
618 if (prevBtn.length > 0) {
619 prevBtn.on("click", function () {
620 let activeTab = $scope.find("ul.nav-tabs .nav-item > .active");
621 let prevTab = activeTab.parent().prev("li").find(".tab-item-title");
622 prevTab.trigger("click");
623 });
624 }
625
626
627 // Tabs Arrow Icons show/hide automatic when item is more than container
628 let tabSliderContainers = $scope.find(".tabs_sliders");
629
630 tabSliderContainers.each(function () {
631 let tabWrapWidth = $(this).outerWidth();
632 let totalWidth = 0;
633
634 let slideBtnLeft = $(this).find("#scroll_left_btn");
635 let slideBtnRight = $(this).find("#scroll_right_btn");
636 let navWrap = $(this).find(".slide_nav_tabs");
637 let navWrapItem = navWrap.children("li");
638
639 navWrapItem.each(function () {
640 totalWidth += $(this).outerWidth();
641 });
642
643 // Set initial scroll position to zero
644 navWrap.scrollLeft(0);
645
646 if (totalWidth > tabWrapWidth) {
647 slideBtnLeft.removeClass("inactive-left-arrow");
648 slideBtnRight.removeClass("inactive-right-arrow");
649 } else {
650 slideBtnLeft.addClass("inactive-left-arrow");
651 slideBtnRight.addClass("inactive-right-arrow");
652 }
653
654 function updateScrollerButtons() {
655 let scrollLeft = navWrap.scrollLeft();
656 let scrollWidth = navWrap[0].scrollWidth;
657 let navWidth = navWrap.outerWidth();
658
659 if (scrollLeft <= 0) {
660 slideBtnLeft.addClass("inactive-left-arrow");
661 } else {
662 slideBtnLeft.removeClass("inactive-left-arrow");
663 }
664
665 if (scrollLeft + navWidth >= scrollWidth - 1) {
666 slideBtnRight.addClass("inactive-right-arrow");
667 } else {
668 slideBtnRight.removeClass("inactive-right-arrow");
669 }
670 }
671
672 slideBtnRight.on("click", function () {
673 navWrap.animate({ scrollLeft: "+=200px" }, 300, function() {
674 updateScrollerButtons();
675 });
676 });
677
678 slideBtnLeft.on("click", function () {
679 navWrap.animate({ scrollLeft: "-=200px" }, 300, function() {
680 updateScrollerButtons();
681 });
682 });
683
684 navWrap.on('scroll', updateScrollerButtons);
685 updateScrollerButtons();
686
687 // Center the active tab on load
688 let activeTab = navWrap.find(".nav-item .nav-link.active");
689 if (activeTab.length) {
690 let activeTabPosition = activeTab.position().left;
691 let activeTabWidth = activeTab.outerWidth();
692 let navWrapCenter = navWrap.outerWidth() / 2;
693
694 navWrap.scrollLeft(activeTabPosition - navWrapCenter + (activeTabWidth / 2));
695 updateScrollerButtons();
696 }
697 });
698
699
700 //=== Sticky Tab
701 let stickyTab = $scope.find(".sticky_tab");
702 let windowWidth = $(window).width();
703
704 if (stickyTab.length > 0) {
705 if (windowWidth > 576) {
706 let stickyTabHeight = stickyTab.height() + 100;
707 let stickyTabOffset = stickyTab.offset().top + stickyTabHeight;
708
709 $(window).on("scroll", function () {
710 let scrollTop = $(window).scrollTop();
711 if (scrollTop >= stickyTabOffset) {
712 stickyTab.addClass("tab_fixed");
713 } else {
714 stickyTab.removeClass("tab_fixed");
715 }
716 });
717 }
718 }
719 },
720
721 //======================== Pricing Table Tabs =========================== //
722 pricing_table_tabs: function ($scope) {
723 //============= Currency Changes
724 let pricingCurrency = $scope.find(".pricing-currency");
725 if (pricingCurrency.length > 0) {
726 pricingCurrency.on("change", function () {
727 let dollar_id = $(this).attr("data-id");
728 let dollar = $(".price[data-id=" + dollar_id + "] .dollar");
729 let euro = $(".price[data-id=" + dollar_id + "] .euro");
730
731 if (
732 $(".pricing-currency[data-id=" + dollar_id + "]").val() === "EURO"
733 ) {
734 dollar.css("display", "none");
735 euro.css("display", "inline-block");
736 } else {
737 euro.css("display", "none");
738 dollar.css("display", "inline-block");
739 }
740 });
741 }
742
743 // custom tab js
744 let pricingTabjs = $scope.find(".ezd-tab-menu li button");
745 pricingTabjs.on("click", function (e) {
746 e.preventDefault();
747
748 // Remove active class from all tabs within the same menu
749 $(this)
750 .closest(".ezd-tab-menu")
751 .find("li button")
752 .removeClass("active");
753
754 // Add active class to the clicked tab
755 $(this).addClass("active");
756
757 var target = $(this).attr("data-rel");
758
759 $("#" + target)
760 .addClass("active")
761 .siblings(".ezd-tab-box")
762 .removeClass("active");
763
764 return false;
765 });
766 },
767
768
769 };
770
771 $window.on("elementor/frontend/init", spiderElements.onInit);
772 })(jQuery, window);
773