1jQuery(document).ready(function () { 2 jQuery(document).on("click", ".cwp-alert .cwp-alert-close", function () { 3 var $this = jQuery(this), 4 $parent = $this.closest('.cwp-alert'); 5 $parent.slideUp(200, function () { 6 if ($parent.hasClass("cwp-js-alert")) { 7 $parent.hide(); 8 } else { 9 $parent.remove(); 10 } 11 }); 12 }); 13 14 jQuery(document).on('click', '.cubewp-modal-trigger', function (event) { 15 event.preventDefault(); 16 var $this = jQuery(this), 17 target = jQuery($this.attr('data-cubewp-modal')); 18 if (target.length > 0) { 19 target.addClass('shown').fadeIn(); 20 } 21 }); 22 jQuery(document).on('click', '.cubewp-modal-close', function (event) { 23 event.preventDefault(); 24 var $this = jQuery(this), 25 target = $this.closest('.cubewp-modal'); 26 target.removeClass('shown').fadeOut(); 27 }); 28 29 var view_all_child_terms = jQuery('.cwp-taxonomy-term-child-terms-see-more'); 30 if (view_all_child_terms.length > 0) { 31 view_all_child_terms.on('click', function (e) { 32 e.preventDefault(); 33 var $this = jQuery(this), 34 more = $this.attr('data-more'), 35 less = $this.attr('data-less'), 36 all_child_terms = $this.closest('.cwp-taxonomy-term-child-terms').find('.cwp-taxonomy-term-child-terms-more'); 37 if ($this.hasClass('cwp-viewing-less')) { 38 $this.text(more); 39 $this.removeClass('cwp-viewing-less'); 40 all_child_terms.slideUp('hide'); 41 } else { 42 $this.text(less); 43 $this.addClass('cwp-viewing-less'); 44 all_child_terms.slideDown('show'); 45 } 46 }); 47 } 48 49}); 50 51function cwp_notification_ui(notification_type, notification_content) { 52 var $cwp_alert = jQuery(".cwp-alert.cwp-js-alert"), 53 $alert_class = '', 54 $cwp_alert_content = $cwp_alert.find('.cwp-alert-content'); 55 if ($cwp_alert.is(":visible") && $cwp_alert_content.html() === notification_content) { 56 return false; 57 } 58 if ($cwp_alert.is(":visible")) { 59 $cwp_alert.slideUp(200, function () { 60 if ($cwp_alert.hasClass("cwp-js-alert")) { 61 $cwp_alert.hide(); 62 } else { 63 $cwp_alert.remove(); 64 } 65 }); 66 } 67 if (notification_type === 'success') { 68 $alert_class = 'cwp-alert-success'; 69 } else if (notification_type === 'warning') { 70 $alert_class = 'cwp-alert-warning'; 71 } else if (notification_type === 'info') { 72 $alert_class = 'cwp-alert-info'; 73 } else if (notification_type === 'error') { 74 $alert_class = 'cwp-alert-danger'; 75 } 76 $cwp_alert.removeClass("cwp-alert-danger cwp-alert-success cwp-alert-warning cwp-alert-info").addClass($alert_class); 77 $cwp_alert.find('.cwp-alert-heading').text(notification_type + "!"); 78 $cwp_alert_content.html(notification_content); 79 $cwp_alert.slideDown(); 80 setTimeout(function () { 81 $cwp_alert.slideUp(200, function () { 82 if ($cwp_alert.hasClass("cwp-js-alert")) { 83 $cwp_alert.hide(); 84 } else { 85 $cwp_alert.remove(); 86 } 87 }); 88 }, 3000); 89} 90 91jQuery(document).on('click', '.cwp-post-confirmation-wrap .cwp-confirmation-bottom-bar', function (e) { 92 jQuery('.cwp-post-confirmation').slideToggle(700); 93}); 94jQuery(document).on('click', '.cwp-post-confirmation-wrap .cwp-confirmation-bottom-bar', function (e) { 95 jQuery('.cwp-post-confirmation').slideToggle(700); 96}); 97jQuery(document).on('click', '.cwp-save-post', function (e) { 98 var thisObj = jQuery(this); 99 var pid = thisObj.data('pid'); 100 thisObj.addClass('cubewp-active-ajax'); 101 jQuery.ajax({ 102 url: cwp_alert_ui_params.ajax_url, 103 type: 'POST', 104 data: 'action=cubewp_save_post&post-id=' + pid + '&nonce=' + cwp_alert_ui_params.nonce, 105 dataType: "json", 106 success: function (response) { 107 cwp_notification_ui(response.type, response.msg); 108 if (typeof response.text != 'undefined' && response.text != '') { 109 thisObj.addClass('cwp-saved-post'); 110 thisObj.removeClass('cwp-save-post'); 111 thisObj.find('.cwp-saved-text').html(response.text); 112 thisObj.removeClass('cubewp-active-ajax'); 113 } 114 } 115 }); 116}); 117jQuery(document).on('click', '.cwp-saved-post', function (e) { 118 var thisObj = jQuery(this); 119 var pid = thisObj.data('pid'); 120 var action = thisObj.data('action'); 121 thisObj.addClass('cubewp-active-ajax'); 122 jQuery.ajax({ 123 url: cwp_alert_ui_params.ajax_url, 124 type: 'POST', 125 data: 'action=cubewp_remove_saved_posts&post-id=' + pid + '&nonce=' + cwp_alert_ui_params.nonce, 126 dataType: "json", 127 success: function (response) { 128 cwp_notification_ui(response.type, response.msg); 129 if (typeof response.text != 'undefined' && response.text != '') { 130 if (action == 'remove') { 131 thisObj.closest('tr').remove(); 132 } 133 thisObj.addClass('cwp-save-post'); 134 thisObj.removeClass('cwp-saved-post'); 135 thisObj.find('.cwp-saved-text').html(response.text); 136 thisObj.removeClass('cubewp-active-ajax'); 137 } 138 } 139 }); 140}); 141 142/*-------- Mega Menu and Nav Menu --------*/ 143// CubeWP Menus JS >> 144jQuery(document).ready(function ($) { 145 jQuery(document).on( 146 "click", 147 ".elementor-cubewp-menu-toggle__icon--open", 148 function () { 149 jQuery(this).next("svg").addClass("active"); 150 jQuery(this).removeClass("active"); 151 jQuery(this) 152 .closest(".elementor-cubewp-menu-toggle") 153 .next(".elementor-cubewp-nav-menu--dropdown") 154 .addClass("active"); 155 } 156 ); 157 jQuery(document).on( 158 "click", 159 ".elementor-cubewp-menu-toggle__icon--close", 160 function () { 161 jQuery(this).prev("svg").addClass("active"); 162 jQuery(this).removeClass("active"); 163 jQuery(this) 164 .closest(".elementor-cubewp-menu-toggle") 165 .next(".elementor-cubewp-nav-menu--dropdown") 166 .removeClass("active"); 167 } 168 ); 169 jQuery(document).on("click", ".cubwp-menu-desktop.mobile", function () { 170 jQuery(this) 171 .closest(".elementor-widget-container") 172 .find(".cubewp-offcanvas-menus") 173 .addClass("active"); 174 }); 175 jQuery(document).on("click", ".cubewp-menu-closed", function () { 176 jQuery(this) 177 .closest(".elementor-widget-container") 178 .find(".cubewp-offcanvas-menus") 179 .removeClass("active"); 180 }); 181 182 $(document).on("click", ".cubewp-mega-menu-item.hover", function (event) { 183 if ($(window).width() <= 1024) { 184 if (!$(event.target).closest(".cubewp-mega-menu-item-dropdown").length) { 185 $(this).toggleClass("active"); 186 $(this).closest('.cubewp-mega-menu').toggleClass("active"); 187 } 188 } 189 }); 190 $(document).on("click", ".close-mega-menu-mobile", function (event) { 191 if ($(window).width() <= 1024) { 192 $('.cubewp-mega-menu-item , .cubewp-mega-menu').removeClass("active"); 193 } 194 }); 195 jQuery(document).ready(function ($) { 196 // Open the next slide when clicking the trigger 197 $(document).on("click", ".container-next-triger", function () { 198 $(this) 199 .closest(".elementor-element") 200 .next(".container-next-screen") 201 .addClass("active"); 202 }); 203 // Close the slide when clicking the back button 204 $(document).on("click", ".container-back-slide", function (e) { 205 if ($(window).width() <= 1024) { 206 e.preventDefault(); 207 setTimeout(() => { 208 if ($(this).closest(".container-next-screen").length > 0) { 209 $(this).closest(".container-next-screen").removeClass("active"); 210 } else { 211 $(this).closest(".cubewp-mega-menu").removeClass("active"); 212 $(this).closest(".cubewp-mega-menu-item").removeClass("active"); 213 } 214 }, 200); 215 } 216 }); 217 }); 218 219 // CubeWP Mega menus JS >> 220 jQuery(document).on( 221 "click", 222 ".cubewp-mega-menu .cubewp-mega-menu-item.click", 223 function () { 224 var getID = jQuery(this).data("showid"); 225 jQuery(this) 226 .closest(".cubewp-mega-menu") 227 .find(".cubewp-mega-menu-item-dropdown") 228 .removeClass("active"); 229 jQuery(this) 230 .closest(".cubewp-mega-menu") 231 .find(".cubewp-mega-menu-item-dropdown") 232 .removeClass("init"); 233 jQuery(this) 234 .closest(".cubewp-mega-menu") 235 .find(".cubewp-mega-menu-item.click") 236 .removeClass("active"); 237 jQuery("#" + getID).addClass("active"); 238 jQuery(document.body).trigger("cubewp_mega_menu_item_loaded"); 239 jQuery(this).addClass("active"); 240 setTimeout(function () { 241 jQuery("#" + getID).addClass("init"); 242 }, 500); 243 } 244 ); 245 246 jQuery(document).on( 247 "click", 248 ".cubewp-mega-menu-mobile-button", 249 function () { 250 jQuery(this).next(".cubewp-mega-menu.cubwp-menu-desktop").slideToggle(); 251 jQuery(this).toggleClass("active"); 252 } 253 ); 254 255 function adjustMegaMenuDropdown($this) { 256 var dropdown = $this.find(".cubewp-mega-menu-item-dropdown"); 257 if (dropdown.length) { 258 var bodyWidth = jQuery("body").width(); // Get the full width of the body 259 var dropdownOffsetLeft = dropdown.offset().left; // Current left position of the dropdown 260 var bodyOffsetLeft = jQuery("body").offset().left; // Body's left position (should be 0) 261 var difference = dropdownOffsetLeft - bodyOffsetLeft; 262 263 // Adjust the dropdown's width and position to span the entire body width 264 dropdown.css({ 265 "left": "-" + difference + "px", 266 "right": "auto", 267 "width": bodyWidth + "px" 268 }); 269 } 270 } 271 272 jQuery(document).on("mouseenter", ".cubewp-mega-menu-item", function () { 273 var $this = jQuery(this); 274 adjustMegaMenuDropdown($this); 275 }); 276 277 jQuery(document).on("mouseleave", ".cubewp-mega-menu-item", function () { 278 jQuery(this).find(".cubewp-mega-menu-item-dropdown").css({ 279 "left": "unset", 280 }); 281 }); 282 283 setTimeout(function () { 284 if (jQuery(".elementor-cubewp-nav-menu__container").length > 0) { 285 var get_iconsInd = jQuery(".elementor-cubewp-nav-menu__container").data( 286 "icons" 287 ); 288 if (typeof get_iconsInd === "string") { 289 get_iconsInd = get_iconsInd.trim().replace(/1$/, ""); 290 } 291 jQuery(".elementor-cubewp-nav-menu__container") 292 .find(".menu-item-has-children>a") 293 .append(get_iconsInd); 294 } 295 }, 200); 296}); 297 298/*------- CubeWP Post Slider ---------*/ 299function initPostSlider($scope, clicked) { 300 var sliders = $scope.find('.cubewp-post-slider'); 301 if (!sliders.length) return; 302 sliders.each(function () { 303 var sliderElement = jQuery(this); 304 305 if (sliderElement.hasClass('slick-initialized')) { 306 if (clicked == 'clicked') { 307 sliderElement.slick("unslick"); 308 console.log('have slider'); 309 sliderElement.addClass('sliderElement'); 310 } else { 311 return; 312 313 } 314 315 } 316 317 var isPrevSvg = sliderElement.data('is-prev-svg'); 318 var isNextSvg = sliderElement.data('is-next-svg'); 319 320 var prevArrowHtml = isPrevSvg ? sliderElement.attr('data-prev-arrow-svg') : sliderElement.data('prev-arrow'); 321 322 var nextArrowHtml = isNextSvg ? sliderElement.attr('data-next-arrow-svg') : sliderElement.data('next-arrow'); 323 324 var enable_wrapper = sliderElement.data('enable-wrapper'); 325 var slidesToShow = sliderElement.data('slides-to-show'); 326 var slidesToScroll = sliderElement.data('slides-to-scroll'); 327 var slidesToShowTablet = sliderElement.data('slides-to-show-tablet'); 328 var slidesToShowTabletPortrait = sliderElement.data('slides-show-tablet-portrait'); 329 var slidesToShowMobile = sliderElement.data('slides-to-show-mobile'); 330 var slidesToScrollTablet = sliderElement.data('slides-to-scroll-tablet'); 331 var slidesToScrollTabletPortrait = sliderElement.data('slides-scroll-tablet-portrait'); 332 var slidesToScrollMobile = sliderElement.data('slides-to-scroll-mobile'); 333 var autoplay = sliderElement.data('autoplay') === true || sliderElement.data('autoplay') === 'true'; 334 var autoplaySpeed = sliderElement.data('autoplay-speed'); 335 var Speed = sliderElement.data('speed'); 336 var infinite = sliderElement.data('infinite') === true || sliderElement.data('infinite') === 'true'; 337 var fade_effect = sliderElement.data('fade') === true || sliderElement.data('fade') === 'true'; 338 var variableWidth = sliderElement.data('variable-width') === true || sliderElement.data('variable-width') === 'true'; 339 var prevArrowButton, nextArrowButton; 340 341 if (isPrevSvg) { 342 prevArrowButton = '<button type="button" class="slick-prev">' + prevArrowHtml + '</button>'; 343 } else { 344 prevArrowButton = '<button type="button" class="slick-prev"><i class="' + prevArrowHtml + '"></i></button>'; 345 } 346 347 if (isNextSvg) { 348 nextArrowButton = '<button type="button" class="slick-next">' + nextArrowHtml + '</button>'; 349 } else { 350 nextArrowButton = '<button type="button" class="slick-next"><i class="' + nextArrowHtml + '"></i></button>'; 351 } 352 var CustomArrows = sliderElement.data('custom-arrows') === true || sliderElement.data('custom-arrows') === 'true'; 353 var CustomDots = sliderElement.data('custom-dots') === true || sliderElement.data('custom-dots') === 'true'; 354 var enableProgressBar = sliderElement.data('enable-progress-bar') === true || sliderElement.data('enable-progress-bar') === 'true'; 355 if(jQuery('body').hasClass('rtl')){ 356 var rtl = true; 357 } else { 358 var rtl = false;
359 } 360 sliderElement.slick({ 361 slidesToShow: slidesToShow, 362 slidesToScroll: slidesToScroll, 363 autoplay: autoplay, 364 autoplaySpeed: autoplaySpeed, 365 speed: Speed, 366 infinite: infinite, 367 fade: fade_effect, 368 variableWidth: variableWidth, 369 prevArrow: prevArrowButton, 370 nextArrow: nextArrowButton, 371 rtl: rtl, 372 arrows: CustomArrows, 373 dots: CustomDots, 374 responsive: [{ 375 breakpoint: 1025, 376 settings: { 377 slidesToShow: slidesToShowTablet, 378 slidesToScroll: slidesToScrollTablet 379 } 380 }, 381 { 382 breakpoint: 768, 383 settings: { 384 slidesToShow: slidesToShowTabletPortrait, 385 slidesToScroll: slidesToScrollTabletPortrait 386 } 387 }, 388 { 389 breakpoint: 481, 390 settings: { 391 slidesToShow: slidesToShowMobile, 392 slidesToScroll: slidesToScrollMobile 393 } 394 } 395 ] 396 }); 397 398 if (enableProgressBar == true) { 399 if (!sliderElement.next('.slick-progress').length) { 400 sliderElement.after( 401 '<div class="slick-progress"><div class="slick-progress-bar"></div></div>' 402 ); 403 var totalSlides = sliderElement.slick("getSlick").slideCount; 404 sliderElement.on("afterChange", function (event, slick, currentSlide) { 405 var progress = ((currentSlide + 1) / totalSlides) * 100; 406 sliderElement.next('.slick-progress').find('.slick-progress-bar').css("width", progress + "%"); 407 }); 408 } 409 } 410 if (enable_wrapper == true) { 411 sliderElement.append('<div class="slick-arrows-wrapper"></div>'); 412 sliderElement.find(".slick-prev").appendTo(sliderElement.find(".slick-arrows-wrapper")); 413 sliderElement.find(".slick-dots").appendTo(sliderElement.find(".slick-arrows-wrapper")); 414 sliderElement.find(".slick-next").appendTo(sliderElement.find(".slick-arrows-wrapper")); 415 } 416 }); 417 if (clicked == 'clicked') { 418 jQuery(document).trigger("post_slider_initialized", [$scope]); 419 } 420} 421(function ($) { 422 // Expose initPostSlider to a global object if needed outside Elementor's scope 423 if (typeof window.CubeWp === 'undefined') { 424 window.CubeWp = {}; 425 } 426 window.CubeWp.initPostSlider = initPostSlider; 427 428 // Hook for Elementor frontend and editor 429 jQuery(window).on('elementor/frontend/init', function () { 430 elementorFrontend.hooks.addAction('frontend/element_ready/cubewp_posts.default', initPostSlider); 431 }); 432})(jQuery); 433 434var CubeWpShortcodePostsAjax = { 435 loadPosts: function (containerSelector) { 436 var $container = jQuery(containerSelector); 437 var parameters = $container.data('parameters'); 438 if (parameters) { 439 jQuery.ajax({ 440 url: cwp_alert_ui_params.ajax_url, 441 type: 'POST', 442 data: { 443 action: 'cubewp_posts_output', 444 ...parameters, 445 load_via_ajax: 'yes' 446 }, 447 success: function (response) { 448 if (response.success) { 449 $container.replaceWith(response.data.content); 450 initPostSlider(jQuery(document.body)); 451 jQuery(document.body).trigger('cubewp_posts_loaded'); 452 } else { 453 $container.html('<div class="cubewp-error-card">Error loading posts.</div>'); 454 } 455 }, 456 error: function () { 457 $container.html('<div class="cubewp-error-card">Failed to load posts.</div>'); 458 } 459 }); 460 } 461 } 462}; 463jQuery(document).on("click", ".vpack-nested-tabs .e-n-tab-title", function () { 464 var $dataid = jQuery(this).attr('aria-controls'); 465 var $sliderContainer = jQuery(this).closest('.elementor-element').find('#' + $dataid); 466 var clicked = 'clicked'; 467 if (jQuery(this).hasClass('init-clicked')) { 468 return false;
469 } 470 initPostSlider($sliderContainer, clicked); 471 jQuery(this).addClass('init-clicked'); 472}); 473 474/* CubeWP Term Slider */ 475function initTermSlider($scope, clicked) { 476 var sliders = $scope.find('.cubewp-term-slider'); 477 if (!sliders.length) return; 478 sliders.each(function () { 479 var sliderElement = jQuery(this); 480 481 if (sliderElement.hasClass('slick-initialized')) { 482 if (clicked == 'clicked') { 483 sliderElement.slick("unslick"); 484 console.log('have slider'); 485 sliderElement.addClass('sliderElement'); 486 } else { 487 return; 488 489 } 490 491 } 492 493 var sliderDeviceOption = sliderElement.data('slider-device-option'); 494 495 var isPrevSvg = sliderElement.data('is-prev-svg'); 496 var isNextSvg = sliderElement.data('is-next-svg'); 497 498 var prevArrowHtml = isPrevSvg ? sliderElement.attr('data-prev-arrow-svg') : sliderElement.data('prev-arrow'); 499 500 var nextArrowHtml = isNextSvg ? sliderElement.attr('data-next-arrow-svg') : sliderElement.data('next-arrow'); 501 502 var enable_wrapper = sliderElement.data('enable-wrapper'); 503 var slidesToShow = sliderElement.data('slides-to-show'); 504 var slidesToScroll = sliderElement.data('slides-to-scroll'); 505 var slidesToShowTablet = sliderElement.data('slides-to-show-tablet'); 506 var slidesToShowTabletPortrait = sliderElement.data('slides-show-tablet-portrait'); 507 var slidesToShowMobile = sliderElement.data('slides-to-show-mobile'); 508 var slidesToScrollTablet = sliderElement.data('slides-to-scroll-tablet'); 509 var slidesToScrollTabletPortrait = sliderElement.data('slides-scroll-tablet-portrait'); 510 var slidesToScrollMobile = sliderElement.data('slides-to-scroll-mobile'); 511 var autoplay = sliderElement.data('autoplay') === true || sliderElement.data('autoplay') === 'true'; 512 var autoplaySpeed = sliderElement.data('autoplay-speed'); 513 var Speed = sliderElement.data('speed'); 514 var infinite = sliderElement.data('infinite') === true || sliderElement.data('infinite') === 'true'; 515 var fade_effect = sliderElement.data('fade') === true || sliderElement.data('fade') === 'true'; 516 var variableWidth = sliderElement.data('variable-width') === true || sliderElement.data('variable-width') === 'true'; 517 var draggable = sliderElement.data('draggable') === true || sliderElement.data('draggable') === 'true'; 518 var prevArrowButton, nextArrowButton; 519 520 if (isPrevSvg) { 521 prevArrowButton = '<button type="button" class="slick-prev">' + prevArrowHtml + '</button>'; 522 } else { 523 prevArrowButton = '<button type="button" class="slick-prev"><i class="' + prevArrowHtml + '"></i></button>'; 524 } 525 526 if (isNextSvg) { 527 nextArrowButton = '<button type="button" class="slick-next">' + nextArrowHtml + '</button>'; 528 } else { 529 nextArrowButton = '<button type="button" class="slick-next"><i class="' + nextArrowHtml + '"></i></button>'; 530 } 531 var CustomArrows = sliderElement.data('custom-arrows') === true || sliderElement.data('custom-arrows') === 'true'; 532 var CustomDots = sliderElement.data('custom-dots') === true || sliderElement.data('custom-dots') === 'true'; 533 var enableProgressBar = sliderElement.data('enable-progress-bar') === true || sliderElement.data('enable-progress-bar') === 'true'; 534 535 // Use real viewport width (jQuery width can be misleading on some mobiles) 536 var viewportWidth = (typeof window !== 'undefined' && window.innerWidth) ? window.innerWidth : $(window).width(); 537 var isMobileViewport = (typeof window !== 'undefined' && window.matchMedia) ? window.matchMedia('(max-width: 767px)').matches : (viewportWidth <= 767); 538 539 // If slider is configured as mobile-only, do not initialize it on larger viewports 540 if (sliderDeviceOption === "mobile_only" && !isMobileViewport) { 541 return; 542 } 543 544 if (sliderDeviceOption === "mobile_only" && isMobileViewport) { 545 sliderElement.slick({ 546 slidesToShow: slidesToShowMobile, 547 slidesToScroll: slidesToScrollMobile, 548 autoplay: autoplay,
549 autoplaySpeed: autoplaySpeed, 550 speed: Speed, 551 infinite: infinite, 552 fade: fade_effect, 553 variableWidth: variableWidth, 554 prevArrow: prevArrowButton, 555 nextArrow: nextArrowButton, 556 arrows: CustomArrows, 557 dots: CustomDots, 558 draggable: draggable, 559 }); 560 }else{ 561 sliderElement.slick({ 562 slidesToShow: slidesToShow, 563 slidesToScroll: slidesToScroll, 564 autoplay: autoplay, 565 autoplaySpeed: autoplaySpeed, 566 speed: Speed, 567 infinite: infinite, 568 fade: fade_effect, 569 variableWidth: variableWidth, 570 prevArrow: prevArrowButton, 571 nextArrow: nextArrowButton, 572 arrows: CustomArrows, 573 dots: CustomDots, 574 draggable: draggable, 575 responsive: [{ 576 breakpoint: 1025, 577 settings: { 578 slidesToShow: slidesToShowTablet, 579 slidesToScroll: slidesToScrollTablet 580 } 581 }, 582 { 583 breakpoint: 768, 584 settings: { 585 slidesToShow: slidesToShowTabletPortrait, 586 slidesToScroll: slidesToScrollTabletPortrait 587 } 588 }, 589 { 590 breakpoint: 481, 591 settings: { 592 slidesToShow: slidesToShowMobile, 593 slidesToScroll: slidesToScrollMobile 594 } 595 } 596 ] 597 }); 598 } 599 600 601 if (enableProgressBar == true) { 602 if (!sliderElement.next('.slick-progress').length) { 603 sliderElement.after( 604 '<div class="slick-progress"><div class="slick-progress-bar"></div></div>' 605 ); 606 var totalSlides = sliderElement.slick("getSlick").slideCount; 607 sliderElement.on("afterChange", function (event, slick, currentSlide) { 608 var progress = ((currentSlide + 1) / totalSlides) * 100; 609 sliderElement.next('.slick-progress').find('.slick-progress-bar').css("width", progress + "%"); 610 }); 611 } 612 } 613 if (enable_wrapper == true) { 614 sliderElement.append('<div class="slick-arrows-wrapper"></div>'); 615 sliderElement.find(".slick-prev").appendTo(sliderElement.find(".slick-arrows-wrapper")); 616 sliderElement.find(".slick-dots").appendTo(sliderElement.find(".slick-arrows-wrapper")); 617 sliderElement.find(".slick-next").appendTo(sliderElement.find(".slick-arrows-wrapper")); 618 } 619 }); 620 if (clicked == 'clicked') { 621 jQuery(document).trigger("term_slider_initialized", [$scope]); 622 } 623} 624(function ($) { 625 // Expose initTermSlider to a global object if needed outside Elementor's scope 626 if (typeof window.CubeWp === 'undefined') { 627 window.CubeWp = {}; 628 } 629 window.CubeWp.initTermSlider = initTermSlider; 630 631 // Hook for Elementor frontend and editor 632 jQuery(window).on('elementor/frontend/init', function () { 633 elementorFrontend.hooks.addAction('frontend/element_ready/cubewp_taxonomy.default', initTermSlider); 634 }); 635 636 // Initialize on document ready for frontend (non-Elementor contexts) 637 jQuery(document).ready(function () { 638 initTermSlider(jQuery(document.body)); 639 }); 640 641 /* CubeWP Post Cards Hover Effects */ 642 window.addEventListener('elementor/frontend/init', () => { 643 644 class CubewpHoverHandler extends elementorModules.frontend.handlers.Base { 645 646 onInit() { 647 this.applyHoverStyles(); 648 } 649 650 onElementChange(settingName) { 651 const hoverSettings = [ 652 'cwp_hover_animation_direction', 653 'cwp_hover_translate_distance', 654 'cwp_hover_transition_duration' 655 ]; 656 if (hoverSettings.includes(settingName)) { 657 this.applyHoverStyles(); 658 } 659 } 660 661 applyHoverStyles() { 662 const settings = this.getElementSettings(); 663 const direction = settings.cwp_hover_animation_direction || 'none'; 664 const visiblity = settings.cwp_hover_visibility || 'default'; 665 666 const $el = this.$element; 667 const elementId = this.getID(); 668 const $card = $el.closest('.cwp-elementor-post-card, .cwp-elementor-term-card'); 669 670 if (!$card.length) return; 671 672 // Remove previous bindings for this specific element only 673 $card.off(`.cubewpHover_${elementId}`); 674 675 if (direction === 'none') { 676 $el.css({ 677 'transform': '', 678 'opacity': '', 679 'transition': '' 680 }); 681 if (visiblity === 'show') { 682 $card.on(`mouseenter.cubewpHover_${elementId}`, () => { 683 $el.css({ 684 'display': 'flex', 685 }); 686 }); 687 // Hover Out 688 $card.on(`mouseleave.cubewpHover_${elementId}`, () => { 689 $el.css({ 690 'display': 'none', 691 }); 692 }); 693 } else if (visiblity === 'hide') { 694 $card.on(`mouseenter.cubewpHover_${elementId}`, () => { 695 $el.css({ 696 'display': 'none', 697 }); 698 }); 699 // Hover Out 700 $card.on(`mouseleave.cubewpHover_${elementId}`, () => { 701 $el.css({ 702 'display': 'flex', 703 }); 704 }); 705 } 706 return; 707 } 708 709 const distance = settings.cwp_hover_translate_distance ?.size || 30; 710 const duration = settings.cwp_hover_transition_duration ?.size || 0.3; 711 712 let transform = ''; 713 let opacity = '1'; 714 715 switch (direction) { 716 case 'top': 717 transform = `translateY(-${distance}px)`; 718 break; 719 case 'bottom': 720 transform = `translateY(${distance}px)`; 721 break; 722 case 'left': 723 transform = `translateX(-${distance}px)`; 724 break; 725 case 'right': 726 transform = `translateX(${distance}px)`; 727 break; 728 case 'fade': 729 opacity = '0'; 730 break; 731 case 'fadeout': 732 opacity = '1'; 733 break; 734 } 735 736 // Apply base styles 737 $el.css({ 738 'transition': `all ${duration}s ease`, 739 'transform': transform, 740 'opacity': opacity 741 }); 742 743 // Hover In (applies only for this element) 744 $card.on(`mouseenter.cubewpHover_${elementId}`, () => { 745 if (direction === 'fadeout') { 746 // Fade OUT on hover 747 $el.css({ 748 'opacity': '0', 749 'transform': 'none', 750 }); 751 } else { 752 // All other animations fade/slide IN 753 $el.css({ 754 'transform': 'none', 755 'opacity': '1' 756 }); 757 } 758 }); 759 760 // Hover Out 761 $card.on(`mouseleave.cubewpHover_${elementId}`, () => { 762 if (direction === 'fadeout') { 763 // Restore visibility when mouse leaves 764 $el.css({ 765 'opacity': '1', 766 'transform': transform, 767 }); 768 } else { 769 // Return to default (hidden or translated) 770 $el.css({ 771 'transform': transform, 772 'opacity': opacity 773 }); 774 } 775 }); 776 } 777 } 778 779 // Apply to container, button, and icon widgets 780 ['container', 'button.default', 'icon.default'].forEach(widget => { 781 elementorFrontend.hooks.addAction(`frontend/element_ready/${widget}`, ($scope) => { 782 elementorFrontend.elementsHandler.addHandler(CubewpHoverHandler, { 783 $element: $scope 784 }); 785 }); 786 }); 787 }); 788 789 window.addEventListener('elementor/frontend/init', () => { 790 elementorFrontend.hooks.addAction('frontend/element_ready/container', function ($scope) { 791 if (elementorFrontend.isEditMode()) { 792 class ContainerHandler extends elementorModules.frontend.handlers.Base { 793 onInit() { 794 super.onInit(); 795 const settings = this.getElementSettings(); 796 const cwp_click_enable = settings.cwp_click_enable;
797 const cwp_click_apply = settings.cwp_click_apply; 798 if (cwp_click_enable == 'yes' && cwp_click_apply == 'custom') { 799 $scope.css('display', 'none'); 800 }else{ 801 $scope.css('display', ''); 802 } 803 } 804 805 onElementChange(settingName) { 806 super.onElementChange?.apply(this, arguments); 807 const sliderSettings = [ 808 'cwp_click_enable' , 'cwp_click_apply' 809 ]; 810 811 if (sliderSettings.includes(settingName)) { 812 this.onInit(); 813 } 814 } 815 } 816 elementorFrontend.elementsHandler.addHandler(ContainerHandler, { 817 $element: $scope 818 }); 819 } 820 }); 821 }); 822 823 jQuery(document).ready(function ($) { 824 function cwpRefreshMapsInCard($card) { 825 if (typeof VP_Refresh_Or_Init_Single_Map !== 'function') { 826 return; 827 } 828 setTimeout(function () { 829 $card.find('.vp-cubewp-map-container').each(function () { 830 VP_Refresh_Or_Init_Single_Map($(this)); 831 }); 832 }, 100); 833 } 834 835 jQuery(document).on('click', '.cwp-elementor-post-card, .cwp-elementor-term-card', function (event) { 836 var $card = $(this); 837 $card.find('.cwp-click-element[data-cwp-click-enabled="true"]').each(function () { 838 const clickable = $(this); 839 const targetMode = clickable.data('cwp-target-mode'); 840 const applyCss = clickable.data('cwp-apply-css'); 841 if (targetMode === 'parent' && applyCss) { 842 clickable.attr('style', function (i, oldStyle) { 843 return (oldStyle ? oldStyle + '; ' : '') + applyCss; 844 }); 845 } 846 }); 847 cwpRefreshMapsInCard($card); 848 }); 849 850 jQuery(document).on('click', '.cwp-click-element[data-cwp-click-enabled="true"]', function (event) { 851 const clickable = $(this); 852 const targetMode = clickable.data('cwp-target-mode'); 853 const applyCss = clickable.data('cwp-apply-css'); 854 if (targetMode === 'current' && applyCss) { 855 clickable.attr('style', function (i, oldStyle) { 856 return (oldStyle ? oldStyle + '; ' : '') + applyCss; 857 }); 858 } 859 cwpRefreshMapsInCard(clickable.closest('.cwp-elementor-post-card, .cwp-elementor-term-card')); 860 }); 861 862 jQuery(document).on('click', '.cwp-click-element[data-cwp-click-enabled="true"]', function (event) { 863 const clickable = $(this); 864 const targetMode = clickable.data('cwp-target-class'); 865 866 867 var $this_data = $('.cwp-click-element[data-cwp-apply-class="' + targetMode + '"]'); 868 var $this_data_remove = $('.cwp-click-element[data-cwp-remove-class="' + targetMode + '"]'); 869 if ($this_data.length > 0) { 870 const targetModes = $this_data.data('cwp-target-mode'); 871 const dataID = $this_data.data('id'); 872 const applyClass = $this_data.data('cwp-apply-class'); 873 const applyCss = $this_data.data('cwp-apply-css'); 874 if (targetModes === 'custom' && applyClass) { 875 const card = $(this).closest('.cwp-elementor-post-card, .cwp-elementor-term-card'); 876 const element = card.find('.cwp-click-element[data-id="' + dataID + '"]'); 877 element.removeAttr('style'); 878 element.attr('style', applyCss); 879 element.find('.vp-cubewp-map-container').addBack('.vp-cubewp-map-container').each(function () { 880 if (typeof VP_Refresh_Or_Init_Single_Map === 'function') { 881 VP_Refresh_Or_Init_Single_Map($(this)); 882 } else if (typeof VP_Init_Single_Map === 'function') { 883 VP_Init_Single_Map($(this)); 884 } 885 }); 886 } 887 } 888 if ($this_data_remove.length > 0) { 889 const targetModes = $this_data_remove.data('cwp-target-mode'); 890 const dataID = $this_data_remove.data('id'); 891 const removeClass = $this_data_remove.data('cwp-remove-class'); 892 const removeCss = $this_data_remove.data('cwp-remove-css'); 893 if (targetModes === 'custom' && removeClass && $this_data_remove.length > 0) { 894 const card = $(this).closest('.cwp-elementor-post-card, .cwp-elementor-term-card'); 895 const element = card.find('.cwp-click-element[data-id="' + dataID + '"]'); 896 element.removeAttr('style'); 897 element.attr('style', removeCss); 898 element.find('.vp-cubewp-map-container').addBack('.vp-cubewp-map-container').each(function () { 899 if (typeof VP_Refresh_Or_Init_Single_Map === 'function') { 900 VP_Refresh_Or_Init_Single_Map($(this)); 901 } else if (typeof VP_Init_Single_Map === 'function') { 902 VP_Init_Single_Map($(this)); 903 } 904 }); 905 } 906 } 907 }) 908 }); 909 910 //Grid/List Switcher 911 jQuery(document).on('click', '.cubewp-view-btn', function (e) { 912 e.preventDefault(); 913 914 var $btn = jQuery(this); 915 var view = $btn.data('view'); 916 var $wrapper = $btn.closest('.cubewp-view-switcher'); 917 918 // Active button 919 $wrapper.find('.cubewp-view-btn').removeClass('active'); 920 $btn.addClass('active'); 921 922 // Apply view class to archive container 923 var $archive = jQuery('.cwp-search-result-output .cwp-grids-container'); 924 $archive.removeClass('grid-view list-view').addClass(view + '-view '); 925 if (view === 'list') { 926 cwp_setCookie("cwp_archive_switcher", 'list-view', 30); 927 } else if (view === 'grid') { 928 cwp_setCookie("cwp_archive_switcher", 'grid-view', 30); 929 } 930 }); 931 if (jQuery('.cubewp-view-btn.active').length > 0) { 932 if (typeof cwp_search_filters_ajax_content === 'function') { 933 var $btn = jQuery('.cubewp-view-btn.active'); 934 var view = $btn.data('view'); 935 // Apply view class to archive container 936 var $archive = jQuery('.cwp-search-result-output .cwp-grids-container'); 937 $archive.removeClass('grid-view list-view').addClass(view + '-view '); 938 if (view === 'list') { 939 cwp_setCookie("cwp_archive_switcher", 'list-view', 30); 940 } else if (view === 'grid') { 941 cwp_setCookie("cwp_archive_switcher", 'grid-view', 30); 942 } 943 } 944 } 945 if (jQuery('.cwp-search-result-output .cwp-grids-container').length > 0) { 946 if (typeof cwp_search_filters_ajax_content === 'function') { 947 var $btn = jQuery('.cubewp-view-switcher'); 948 if(!$btn.length > 0){ 949 jQuery('.cwp-search-result-output .cwp-grids-container').removeClass('grid-view list-view').addClass('grid-view'); 950 } 951 }else{ 952 var $btn = jQuery('.cubewp-view-switcher'); 953 if(!$btn.length > 0){ 954 jQuery('.cwp-search-result-output .cwp-grids-container').removeClass('grid-view list-view').addClass('grid-view'); 955 } 956 } 957 } 958})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.