(function($) { "use strict"; //===== Preloader $(window).on('load', function(event) { $('.preloader').delay(500).fadeOut(500); $('#preloader_two').fadeOut(); $(".upstudy_image_preloader").fadeOut("slow"); }); //===== Header Sticky & Headroom.js jQuery(function($) { var header = $(".header-get-sticky"); var topHeader = $(".tpc-header-top-bar"); var topHeaderHeight = topHeader.length ? topHeader.outerHeight() : 0; var topHeaderHidden = false; var stickyMode = typeof upstudy_sticky_data !== 'undefined' ? upstudy_sticky_data.mode : 'smart'; if (header.length) { if (stickyMode === 'always') { $(window).on("scroll", function() { var scrollTop = $(this).scrollTop(); if (scrollTop > 100) { header.addClass("top-header-removed"); } else { header.removeClass("top-header-removed"); } if (scrollTop > topHeaderHeight && !topHeaderHidden) { topHeader.slideUp(200); topHeaderHidden = true; } else if (scrollTop === 0 && topHeaderHidden) { topHeader.slideDown(200); topHeaderHidden = false; } }); } else if (stickyMode === 'smart') { var options = { offset: { up: 100, down: 200 }, tolerance: { up: 5, down: 0 }, classes: { pinned: "headroom--pinned", unpinned: "headroom--unpinned", top: "headroom--top", notTop: "headroom--not-top" } }; var myElement = document.querySelector(".header-get-sticky"); var headroom = new Headroom(myElement, options); headroom.init(); } } }); //===== Login/Register Popup Modal $('.tpc-login-register-popup-trigger').on('click', function(e) { e.preventDefault(); $('.upstudy-login-form-popup').toggleClass('login-popup-visible'); $('.upstudy-login-popup-overlay').toggleClass('active'); }); const login_btn = document.querySelector(".login-item"); const register_btn = document.querySelector(".register-item"); $(".register-form").css("display", "none"); $(function() { $('.login-item, #upstudy-login-form-trigger').on('click', function() { login_btn.classList.add("active"); $(".register-form").css("display", "none"); if (register_btn.classList.contains("active")) { register_btn.classList.remove("active"); $(".login-form").removeAttr("style"); } }); $('.register-item, #upstudy-register-form-trigger').on('click', function() { register_btn.classList.add("active"); $(".login-form").css("display", "none"); if (login_btn.classList.contains("active")) { login_btn.classList.remove("active"); $(".register-form").removeAttr("style"); } }); }); //===== Close Login/Register Modal on Click Outside $('.upstudy-custom-login-wrapper').on('click', function() { console.log("clicked"); }); //===== Close Login Modal on Close Button Click $('.upstudy-login-popup-close .close-trigger').on('click', function() { $('.upstudy-login-form-popup').removeClass('login-popup-visible'); $('.upstudy-login-popup-overlay').removeClass('active'); }); //===== Course Filter Auto Select $('.upstudy-course-filtering input').on('change', function() { $('.upstudy-course-filtering').submit(); }); //===== Course Filter shorting $(document).ready(function() { $('.course-orderby').on('change', function() { $('.course-top-filter').submit(); }); }); //===== Mobile Menu $('.upstudy-mobile-hamburger-menu').on('click', function() { $(".upstudy-mobile-hamburger-menu > a").toggleClass('upstudy-mobile-menu-close--active'); $(".upstudy-mobile-menu-nav-wrapper").toggleClass('upstudy-mobile-menu-visible'); $('body').toggleClass('upstudy-mobile-menu-active'); }); $('.upstudy-mobile-menu-close > a').on('click', function() { $('.upstudy-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active'); $('.upstudy-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible'); $('body').removeClass('upstudy-mobile-menu-active'); }); $('.upstudy-mobile-menu-overlay').on('click', function() { $('.upstudy-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active'); $('.upstudy-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible'); $('body').removeClass('upstudy-mobile-menu-active'); }); //===== Accordion Menu for Mobile $.fn.extend({ accordionMenu: function(options) { var defaults = { speed: 400 } var options = $.extend(defaults, options); return this.each(function() { $(this).addClass('upstudy-mobile-menu-item'); var menuItems = $(this).children('li'); menuItems.find('.upstudy-mobile-menu-item > .upstudy-dropdown-menu').parent().addClass('menu-item-has-children'); $('.upstudy-mobile-menu-item .menu-item-has-children .upstudy-dropdown-menu').hide(); $('.upstudy-mobile-menu-item .menu-item-has-children > a .upstudy-menu-icon').on('click', function(event) { event.stopPropagation(); event.preventDefault(); $(this).parent().siblings('.upstudy-dropdown-menu').slideToggle(options.speed); $(this).parent().siblings('.upstudy-mega-menu').slideToggle(options.speed); }); }); } }); $('#upstudy-mobile-menu-item').accordionMenu(); //===== Elementor Mobile Menu $('.upstudy-elementor-mobile-hamburger-menu').on('click', function() { $(".upstudy-elementor-mobile-hamburger-menu > a").toggleClass('upstudy-mobile-menu-close--active'); $(".upstudy-elementor-mobile-menu-nav-wrapper").toggleClass('upstudy-mobile-menu-visible'); $('body').toggleClass('upstudy-mobile-menu-active'); }); $('.upstudy-elementor-mobile-menu-close > a').on('click', function() { $('.upstudy-elementor-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active'); $('.upstudy-elementor-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible'); $('body').removeClass('upstudy-mobile-menu-active'); }); $('.upstudy-elementor-mobile-menu-overlay').on('click', function() { $('.upstudy-elementor-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active'); $('.upstudy-elementor-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible'); $('body').removeClass('upstudy-mobile-menu-active'); }); //===== Accordion Menu for Elementor Mobile $.fn.extend({ accordionMenu: function(options) { var defaults = { speed: 400 } var options = $.extend(defaults, options); return this.each(function() { $(this).addClass('upstudy-elementor-mobile-menu-item'); var menuItems = $(this).children('li'); menuItems.find('.upstudy-elementor-mobile-menu-item > .upstudy-dropdown-menu').parent().addClass('menu-item-has-children'); $('.upstudy-elementor-mobile-menu-item .menu-item-has-children .upstudy-dropdown-menu').hide(); $('.upstudy-elementor-mobile-menu-item .menu-item-has-children > a .upstudy-menu-icon').on('click', function(event) { event.stopPropagation(); event.preventDefault(); $(this).parent().siblings('.upstudy-dropdown-menu').slideToggle(options.speed); $(this).parent().siblings('.upstudy-mega-menu').slideToggle(options.speed); }); }); } }); $('#upstudy-elementor-mobile-menu-item').accordionMenu(); //===== WooCommerce Helper function upstudy_woocommerce_helper() { $('.product-over-info ul li.add-to-cart a.add_to_cart_button.ajax_add_to_cart').on("click", function() { $(this).closest('li').addClass('added_to_cart_item'); }); } //===== SAL Animation sal(); //===== Video Popup $(function() { $("a.bla-1").YouTubePopUp(); $("a.bla-2").YouTubePopUp({ autoplay: 0 }); }); //===== Search $('#search').on('click', function() { $(".upstudy-search-box").fadeIn(600); }); $('.top-search').on('click', function() { $(".upstudy-search-box").fadeIn(600); }); $('.upstudy-closebtn').on('click', function() { $(".upstudy-search-box").fadeOut(600); }); //===== Like/Wishlist button for blog page jQuery(document).ready(function($) { if (typeof upstudy_like_ajax === 'undefined') { return; // Exit if wp_localize_script is disabled } $('.upstudy-like-btn').on('click', function(event) { event.preventDefault(); var button = $(this); var postID = button.data('postid'); $.ajax({ type: 'POST', url: upstudy_like_ajax.ajaxurl, data: { action: 'upstudy_like', post_id: postID }, success: function(response) { if (response.success) { button.find('.like-count').text(response.data); } } }); }); }); //===== Add to cart animation jQuery(function($){ if (typeof upstudy_cart_settings === 'undefined') return; var ajaxUrl = upstudy_cart_settings.ajax_url || '/wp-admin/admin-ajax.php'; var tutorNonce = upstudy_cart_settings.tutor_nonce || ''; var enableAnimation = !!upstudy_cart_settings.cart_animation; // try refresh via Woo fragments, fallback to our admin-ajax endpoint function refreshCartFragment() { // prefer Woo's fragment endpoint if (typeof wc_cart_fragments_params !== 'undefined' && wc_cart_fragments_params.wc_ajax_url) { var fragUrl = wc_cart_fragments_params.wc_ajax_url.toString().replace('%%endpoint%%', 'get_refreshed_fragments'); $.post(fragUrl, {}, function(data) { if (data && data.fragments && data.fragments['#upstudy-cart-fragment']) { $('#upstudy-cart-fragment').replaceWith(data.fragments['#upstudy-cart-fragment']); return; } else { // fallback fallbackRefresh(); } }, 'json').fail(function() { fallbackRefresh(); }); } else { fallbackRefresh(); } } function fallbackRefresh() { $.post(ajaxUrl, { action: 'upstudy_refresh_cart_fragment' }, function(res) { if (res && res.success && res.data && res.data.fragment) { $('#upstudy-cart-fragment').replaceWith(res.data.fragment); } }, 'json'); } // events to trigger refresh $(document.body).on('added_to_cart', function(){ // Woo AJAX event refreshCartFragment(); }); // Tutor LMS events (different versions use different event names) $(document).on('tutor_after_add_to_cart tutor_course_added_to_cart tutor_added_to_cart', function(){ setTimeout(function(){ refreshCartFragment(); }, 250); }); // fallback: detect ajaxComplete that looks like add-to-cart $(document).ajaxComplete(function(event, xhr, settings){ if (!settings || !settings.data) return; var d = settings.data; if (typeof d === 'string' && (d.indexOf('add-to-cart') !== -1 || d.indexOf('tutor_add_to_cart') !== -1 || d.indexOf('action=tutor_add_to_cart') !== -1)) { setTimeout(function(){ refreshCartFragment(); }, 300); } }); // Tutor mini-cart item remove (uses Tutor's AJAX action 'tutor_remove_from_cart' if available) $(document).on('click', '.tutor-mini-cart-remove', function(e){ e.preventDefault(); var $el = $(this); var courseId = $el.data('course-id'); if (!courseId) return; $.post(ajaxUrl, { action: 'tutor_remove_from_cart', course_id: courseId, security: tutorNonce }, function(res){ // if tutor plugin returns success, refresh fragment; else always try to refresh setTimeout(function(){ refreshCartFragment(); }, 200); }, 'json'); }); // optional: fly animation from cursor to cart if (enableAnimation) { $(document).on('click', '.add_to_cart_button, .single_add_to_cart_button, .tutor-add-to-cart-button, .tutor-course-enroll', function(e){ var $count = $('.upstudy-woo-mini-cart-total-item').first(); if (!$count.length) return; var qty = $(this).data('quantity') || 1, $fly = $('+' + qty + '').appendTo('body'), startX = e.clientX, startY = e.clientY, cartOffset = $count.offset(); if (!cartOffset) { $fly.remove(); return; } var endX = cartOffset.left - $(window).scrollLeft(), endY = cartOffset.top - $(window).scrollTop(), midX = (startX + endX) / 2, midY = Math.min(startY, endY) - 120, duration = 700, startTime = performance.now(); $fly.css({ position: 'fixed', left: startX + 'px', top: startY + 'px', zIndex: 99999, color: '#fff', background: '#0e2a47a3', padding: '6px 10px', borderRadius: '20px', fontSize: '14px', fontWeight: '700', pointerEvents: 'none', transform: 'scale(0.6)', opacity: 0, }); function easeInOut(t) { return t < 0.5 ? 2*t*t : -1 + (4-2*t)*t; } (function animate(time) { var progress = Math.min((time - startTime) / duration, 1); var ease = easeInOut(progress); var x = (1-ease)*(1-ease)*startX + 2*(1-ease)*ease*midX + ease*ease*endX; var y = (1-ease)*(1-ease)*startY + 2*(1-ease)*ease*midY + ease*ease*endY; $fly.css({ left: x + 'px', top: y + 'px', transform: 'scale(' + (0.6 + 0.4*ease) + ')', opacity: 1 - 0.95*ease }); if (progress < 1) { requestAnimationFrame(animate); } else { $fly.remove(); } })(performance.now()); }); } // initial refresh (in case counts differ) // setTimeout to allow WC session initialization setTimeout(function(){ refreshCartFragment(); }, 300); }); })(jQuery);