( function( $ ) { var RegisterUAELQuickView = function( $scope, $ ) { var scope_id = $scope.data( 'id' ); var modal_wrap = $scope.find('.uael-quick-view-' + scope_id ); modal_wrap.appendTo( document.body ); var uael_quick_view_bg = modal_wrap.find( '.uael-quick-view-bg' ), uael_qv_modal = modal_wrap.find( '#uael-quick-view-modal' ), uael_qv_content = uael_qv_modal.find( '#uael-quick-view-content' ), uael_qv_close_btn = uael_qv_modal.find( '#uael-quick-view-close' ), uael_qv_wrapper = uael_qv_modal.find( '.uael-content-main-wrapper'); $scope .off( 'click', '.uael-quick-view-btn' ) .on( 'click', '.uael-quick-view-btn', function( e ) { e.preventDefault(); var $this = $(this); var product_id = $this.data( 'product_id' ); if( ! uael_qv_modal.hasClass( 'loading' ) ) { uael_qv_modal.addClass('loading'); } if ( ! uael_quick_view_bg.hasClass( 'uael-quick-view-bg-ready' ) ) { uael_quick_view_bg.addClass( 'uael-quick-view-bg-ready' ); } $(document).trigger( 'uael_quick_view_loading' ); uael_qv_ajax_call( $this, product_id ); }); $scope .off( 'click', '.uael-quick-view-data' ) .on( 'click', '.uael-quick-view-data', function( e ) { e.preventDefault(); var $this = $(this); var product_id = $this.data( 'product_id' ); if( ! uael_qv_modal.hasClass( 'loading' ) ) { uael_qv_modal.addClass('loading'); } if ( ! uael_quick_view_bg.hasClass( 'uael-quick-view-bg-ready' ) ) { uael_quick_view_bg.addClass( 'uael-quick-view-bg-ready' ); } $(document).trigger( 'uael_quick_view_loading' ); uael_qv_ajax_call( $this, product_id ); }); var uael_qv_ajax_call = function( t, product_id ) { uael_qv_modal.css( 'opacity', 0 ); $.ajax({ url: uael_wc_script.ajax_url, data: { action: 'uael_woo_quick_view', product_id: product_id, nonce: uael_wc_script.quick_view_nonce, }, dataType: 'html', type: 'POST', success: function (data) { uael_qv_content.html(data); uael_qv_content_height(); } }); }; var uael_qv_content_height = function() { // Variation Form var form_variation = uael_qv_content.find('.variations_form'); form_variation.trigger( 'check_variations' ); form_variation.trigger( 'reset_image' ); if (!uael_qv_modal.hasClass('open')) { uael_qv_modal.removeClass('loading').addClass('open'); var scrollbar_width = uael_get_scrollbar_width(); var $html = $('html'); $html.css( 'margin-right', scrollbar_width ); $html.addClass('uael-quick-view-is-open'); } var var_form = uael_qv_modal.find('.variations_form'); if ( var_form.length > 0 && 'function' === typeof var_form.wc_variation_form) { var_form.wc_variation_form(); var_form.find('select').change(); } uael_qv_content.imagesLoaded( function( e ) { var image_slider_wrap = uael_qv_modal.find('.uael-qv-image-slider'); if ( image_slider_wrap.find('li').length > 1 ) { image_slider_wrap.flexslider({ animation: "slide", start: function( slider ) { setTimeout(function() { uael_update_summary_height( true ); }, 300); }, }); }else{ setTimeout(function() { uael_update_summary_height( true ); }, 300); } }); // stop loader $(document).trigger('uael_quick_view_loader_stop'); }; var uael_qv_close_modal = function() { // Close box by click overlay uael_qv_wrapper.on( 'click', function( e ) { if ( this === e.target ) { uael_qv_close(); } }); // Close box with esc key $( document ).on( 'keyup', function(e) { if( e.keyCode === 27 ) { uael_qv_close(); } }); // Close box by click close button uael_qv_close_btn.on( 'click', function( e ) { e.preventDefault(); uael_qv_close(); }); var uael_qv_close = function() { uael_quick_view_bg.removeClass( 'uael-quick-view-bg-ready' ); uael_qv_modal.removeClass('open').removeClass('loading'); $('html').removeClass('uael-quick-view-is-open'); $('html').css( 'margin-right', '' ); setTimeout(function () { uael_qv_content.html(''); }, 600); } }; var uael_update_summary_height = function( update_css ) { var quick_view = uael_qv_content, img_height = quick_view.find( '.product .uael-qv-image-slider' ).first().height(), summary = quick_view.find('.product .summary.entry-summary'), content = summary.css('content'); if ( 'undefined' != typeof content && 544 == content.replace( /[^0-9]/g, '' ) && 0 != img_height && null !== img_height ) { summary.css('height', img_height ); } else { summary.css('height', '' ); } if ( true === update_css ) { uael_qv_modal.css( 'opacity', 1 ); } }; var uael_get_scrollbar_width = function () { var div = $('
'); // Append our div, do our calculation and then remove it $('body').append(div); var w1 = $('div', div).innerWidth(); div.css('overflow-y', 'scroll'); var w2 = $('div', div).innerWidth(); $(div).remove(); return (w1 - w2); } uael_qv_close_modal(); //uael_update_summary_height(); window.addEventListener("resize", function(event) { uael_update_summary_height(); }); /* Add to cart ajax */ /** * uael_add_to_cart_ajax class. */ var uael_add_to_cart_ajax = function() { modal_wrap .off( 'click', '#uael-quick-view-content .single_add_to_cart_button' ) .off( 'uael_added_to_cart' ) .on( 'click', '#uael-quick-view-content .single_add_to_cart_button', this.onAddToCart ) .on( 'uael_added_to_cart', this.updateButton ); }; /** * Handle the add to cart event. */ uael_add_to_cart_ajax.prototype.onAddToCart = function( e ) { e.preventDefault(); var $form = $(this).closest('form'); // If the form inputs are invalid if( ! $form[0].checkValidity() ) { $form[0].reportValidity(); return false; } var $thisbutton = $( this ), product_id = $(this).val(), variation_id = $('input[name="variation_id"]').val() || ''; // Set Quantity. // // For grouped product quantity should be array instead of single value // For that set the quantity as array for grouped product. var quantity = $('input[name="quantity"]').val(); if( $scope.find('.woocommerce-grouped-product-list-item' ).length ) { var quantities = $('input.qty'), quantity = []; $.each(quantities, function(index, val) { var name = $( this ).attr( 'name' ); name = name.replace('quantity[',''); name = name.replace(']',''); name = parseInt( name ); if( $( this ).val() ) { quantity[ name ] = $( this ).val(); } }); } var cartFormData = $form.serialize(); if ( $thisbutton.is( '.single_add_to_cart_button' ) ) { $thisbutton.removeClass( 'added' ); $thisbutton.addClass( 'loading' ); // Ajax action. if ( variation_id != '') { jQuery.ajax ({ url: uael_wc_script.ajax_url, type:'POST', data:'action=uael_add_cart_single_product&product_id=' + product_id + '&nonce=' + uael_wc_script.add_cart_nonce + '&'+ cartFormData, success:function(results) { // Trigger event so themes can refresh other areas. $( document.body ).trigger( 'wc_fragment_refresh' ); modal_wrap.trigger( 'uael_added_to_cart', [ $thisbutton ] ); } }); } else { jQuery.ajax ({ url: uael_wc_script.ajax_url, type:'POST', data:'action=uael_add_cart_single_product&product_id=' + product_id + '&nonce=' + uael_wc_script.add_cart_nonce + '&'+ cartFormData, success:function(results) { // Trigger event so themes can refresh other areas. $( document.body ).trigger( 'wc_fragment_refresh' ); modal_wrap.trigger( 'uael_added_to_cart', [ $thisbutton ] ); } }); } } }; /** * Update cart page elements after add to cart events. */ uael_add_to_cart_ajax.prototype.updateButton = function( e, button ) { button = typeof button === 'undefined' ? false : button; if ( $(button) ) { $(button).removeClass( 'loading' ); $(button).addClass( 'added' ); // View cart text. if ( ! uael_wc_script.is_cart && $(button).parent().find( '.added_to_cart' ).length === 0 && uael_wc_script.is_single_product) { $(button).after( ' ' + uael_wc_script.view_cart + '' ); } } }; /** * Init uael_add_to_cart_ajax. */ new uael_add_to_cart_ajax(); } var RegisterUAELAddCart = function( $scope, $ ) { $layout = $scope.data('widget_type'); if ( 'uael-woo-products.grid-franko' !== $layout && 'uael-woo-products-slider.slider-franko' !== $layout ) { return; } /* Add to cart for styles */ var style_add_to_cart = function() { //fa-spinner $( document.body ) .off( 'click', '.uael-product-actions .uael-add-to-cart-btn.product_type_simple' ) .off( 'uael_product_actions_added_to_cart' ) .on( 'click', '.uael-product-actions .uael-add-to-cart-btn.product_type_simple', this.onAddToCart ) .on( 'uael_product_actions_added_to_cart', this.updateButton ); }; /** * Handle the add to cart event. */ style_add_to_cart.prototype.onAddToCart = function( e ) { e.preventDefault(); var $thisbutton = $(this), product_id = $thisbutton.data('product_id'), quantity = 1; $thisbutton.removeClass( 'added' ); $thisbutton.addClass( 'loading' ); jQuery.ajax ({ url: uael_wc_script.ajax_url, type:'POST', data: { action: 'uael_add_cart_single_product', product_id : product_id, quantity: quantity, nonce: uael_wc_script.add_cart_nonce, }, success:function(results) { // Trigger event so themes can refresh other areas. $( document.body ).trigger( 'wc_fragment_refresh' ); $( document.body ).trigger( 'uael_product_actions_added_to_cart', [ $thisbutton ] ); } }); }; /** * Update cart page elements after add to cart events. */ style_add_to_cart.prototype.updateButton = function( e, button ) { button = typeof button === 'undefined' ? false : button; if ( $(button) ) { $(button).removeClass( 'loading' ); $(button).addClass( 'added' ); } }; /** * Init style_add_to_cart. */ new style_add_to_cart(); } /** * Function for Product Categories. * */ var WidgetUAELWooCategories = function( $scope, $ ) { if ( 'undefined' == typeof $scope ) { return; } var cat_slider = $scope.find('.uael-woo-categories-slider'); if ( cat_slider.length > 0 ) { var slider_selector = cat_slider.find('ul.products'), slider_options = JSON.parse( cat_slider.attr('data-cat_slider') ); WidgetUAELSlickCall( slider_selector, slider_options ); } } /** * Function for Product Grid. * */ var WidgetUAELWooProducts = function( $scope, $ ) { if ( 'undefined' == typeof $scope ) { return; } /* Slider */ var slider_wrapper = $scope.find('.uael-woo-products-slider'); if ( slider_wrapper.length > 0 ) { var slider_selector = slider_wrapper.find('ul.products'), slider_options = JSON.parse( slider_wrapper.attr('data-woo_slider') ); WidgetUAELSlickCall( slider_selector, slider_options ); } if ( ! elementorFrontend.isEditMode() ) { /* Common */ RegisterUAELQuickView( $scope, $ ); /* Style specific cart button */ RegisterUAELAddCart( $scope, $ ); } } /** * Function for slick call. * */ var WidgetUAELSlickCall = function( slider_selector, slider_options ) { // Slick slider has issue with the tablet breakpoint. So, we are managing this with a tweak. var tablet_breakpoint = ( slider_options.responsive && 'undefined' !== slider_options.responsive[0].breakpoint ) ? slider_options.responsive[0].breakpoint : ''; if( tablet_breakpoint == $( window ).width() ) { slider_options.mobileFirst = true; } slider_selector.slick( slider_options ); window.addEventListener( "resize", function( event ) { slider_selector.slick( 'resize' ); }); } var UAELAjaxAddToCart = function( $scope, $ ) { $layout = $scope.data( 'widget_type' ); if ( 'uael-woo-add-to-cart.default' !== $layout ) { return; } var uael_atc_call = $scope.find( '.uael-add-to-cart' ); var uael_ajax_add_to_cart = function() { $( document.body ) .off( 'click', '.uael-add-to-cart .single_add_to_cart_button' ) .off( 'uael_woo_added_to_cart' ) .on( 'click', '.uael-add-to-cart .single_add_to_cart_button', this.onAddToCart ) .on( 'uael_woo_added_to_cart', this.updateButton ); }; /** * Handle the add to cart event. */ uael_ajax_add_to_cart.prototype.onAddToCart = function( e ) { e.preventDefault(); var $form = $( this ).closest( 'form' ); // If the form inputs are invalid if( ! $form[0].checkValidity() ) { $form[0].reportValidity(); return false; } var $thisbutton = $( this ), product_id = $( this ).val(); // Set Quantity. // // For grouped product quantity should be array instead of single value // For that set the quantity as array for grouped product. var quantity = $( 'input[name="quantity"]' ).val(); if( $scope.find( '.woocommerce-grouped-product-list-item' ).length ) { var quantities = $( 'input.qty' ), quantity = []; $.each( quantities, function( index, val ) { var name = $( this ).attr( 'name' ); name = name.replace( 'quantity[', '' ); name = name.replace( ']', '' ); name = parseInt( name ); if( $( this ).val() ) { quantity[ name ] = $( this ).val(); } }); } var cartFormData = $form.serialize(); var variation_id = $('input[name="variation_id"]').val() || ''; if ( $thisbutton.is( '.single_add_to_cart_button' ) ) { if(variation_id != 0){ $thisbutton.removeClass( 'added' ); $thisbutton.addClass( 'loading' ); // Ajax action. jQuery.ajax ({ url: uael_wc_script.ajax_url, type:'POST', data:'action=uael_add_cart_single_product&product_id=' + product_id + '&nonce=' + uael_wc_script.add_cart_nonce + '&'+ cartFormData, success:function( results ) { // Trigger event so themes can refresh other areas. $( document.body ).trigger( 'wc_fragment_refresh' ); uael_atc_call.trigger( 'uael_woo_added_to_cart', [ $thisbutton ] ); } }); } } }; /** * Update cart page elements after add to cart events. */ uael_ajax_add_to_cart.prototype.updateButton = function( e, button ) { button = typeof button === 'undefined' ? false : button; if ( $( button ) ) { $( button ).removeClass( 'loading' ); $( button ).addClass( 'added' ); } }; /** * Init uael_ajax_add_to_cart. */ new uael_ajax_add_to_cart(); } /** * Function for Product Grid. * */ var WidgetUAELWooAddToCart = function( $scope, $ ) { var enable_single_product_page = $scope.find( '.uael-add-to-cart' ).data( 'enable-feature' ); $( 'body' ).off( 'added_to_cart.uael_cart' ).on( 'added_to_cart.uael_cart', function( e, fragments, cart_hash, btn ) { if ( btn && btn.closest( '.elementor-widget-uael-woo-add-to-cart' ).length > 0 ) { if ( btn.hasClass( 'uael-redirect' ) ) { setTimeout( function() { // View cart text. if ( ! uael_wc_script.is_cart && btn.hasClass( 'added' ) ) { window.location = uael_wc_script.cart_url; } }, 200 ); } } }); if ( ! elementorFrontend.isEditMode() && 'yes' === enable_single_product_page ) { UAELAjaxAddToCart( $scope, $ ); } } $( document ) .off( 'click', '.uael-woocommerce-pagination a.page-numbers' ) .on( 'click', '.uael-woocommerce-pagination a.page-numbers', function( e ) { $scope = $( this ).closest( '.elementor-widget-uael-woo-products' ); if ( $scope.find( '.uael-woocommerce' ).hasClass( 'uael-woo-query-main' ) ) { return; } e.preventDefault(); $scope.find( 'ul.products' ).after( '
' ); var node =$scope.data( 'id' ); var page_id = $scope.find( '.uael-woocommerce' ).data('page'); var page_number = 1; var curr = parseInt( $scope.find( '.uael-woocommerce-pagination .page-numbers.current' ).html() ); var skin = $scope.find( '.uael-woocommerce' ).data( 'skin' ); if ( $( this ).hasClass( 'next' ) ) { page_number = curr + 1; } else if ( $( this ).hasClass( 'prev' ) ) { page_number = curr - 1; } else { page_number = $( this ).html(); } $.ajax({ url: uael_wc_script.ajax_url, data: { action: 'uael_get_products', page_id : page_id, widget_id: $scope.data( 'id' ), category: '', skin: skin, page_number : page_number, nonce : uael_wc_script.get_product_nonce, }, dataType: 'json', type: 'POST', success: function ( data ) { $scope.find( '.uael-woo-loader' ).remove(); $('html, body').animate({ scrollTop: ( ( $scope.find( '.uael-woocommerce' ).offset().top ) - 30 ) }, 'slow'); var sel = $scope.find( '.uael-woo-products-inner ul.products' ); sel.replaceWith( data.data.html ); $scope.find( '.uael-woocommerce-pagination' ).replaceWith( data.data.pagination ); $( window ).trigger( 'uael_woocommerce_after_pagination', [ page_id, node ] ); } }); } ); var WidgetUAELMiniCart = function($scope, $) { var miniCartButton = $scope.find( '.uael-mc__btn' ); var cartBtnBehaviour = $scope.find( '.uael-mc__btn' ).data( 'behaviour' ); var modal_open = $scope.find( '.uael-mc-modal-wrap' ); var offcanvas_open = $scope.find( '.uael-mc-offcanvas-wrap' ); var dropdown_main = $scope.find( '.uael-mc-dropdown' ); var modal_main = $scope.find( '.uael-mc-modal' ); var offcanvas_main = $scope.find( '.uael-mc-offcanvas' ); var is_preview_enabled = $scope.hasClass( 'elementor-element-edit-mode' ) && $scope.hasClass( 'uael-mini-cart--preview-yes' ); var cart_dropdown_style = $scope.find( '.uael-mc' ).data( 'cart_dropdown' ); if( is_preview_enabled ) { dropdown_main.removeClass( 'uael-mc-dropdown-close' ); modal_open.removeClass( 'uael-mc-modal-wrap-close' ); modal_main.removeClass( 'uael-mc-modal-close' ); offcanvas_open.removeClass( 'uael-mc-offcanvas-wrap-close' ); offcanvas_main.removeClass( 'uael-mc-offcanvas-close' ); } miniCartButton.on( 'click', function( e ) { e.preventDefault(); if( 'click' === cartBtnBehaviour ) { if ( 'dropdown' == cart_dropdown_style ) { dropdown_main.toggleClass( 'uael-mc-dropdown-close' ); e.stopPropagation(); } } if( 'modal' == cart_dropdown_style ) { modal_open.removeClass( 'uael-mc-modal-wrap-close' ); modal_main.removeClass( 'uael-mc-modal-close' ); $( document ).on( 'click', '.uael-mc-modal-wrap, .uael-mc-modal__close-btn', function() { var $this = $( this ).closest( '.uael-mc' ); $this.find( '.uael-mc-modal-wrap' ).addClass( 'uael-mc-modal-wrap-close' ); $this.find( '.uael-mc-modal' ).addClass( 'uael-mc-modal-close' ); } ); } if( 'offcanvas' == cart_dropdown_style ) { offcanvas_open.removeClass( 'uael-mc-offcanvas-wrap-close' ); offcanvas_main.removeClass( 'uael-mc-offcanvas-close' ); $( document ).on( 'click', '.uael-mc-offcanvas-wrap, .uael-mc-offcanvas__close-btn', function() { var $this = $( this ).closest( '.uael-mc' ); $this.find( '.uael-mc-offcanvas-wrap' ).addClass( 'uael-mc-offcanvas-wrap-close' ); $this.find( '.uael-mc-offcanvas' ).addClass( 'uael-mc-offcanvas-close' ); } ); } }); if( 'hover' === cartBtnBehaviour ) { if( ! is_preview_enabled ) { miniCartButton.hover( function( e ) { e.preventDefault(); if( 'dropdown' == cart_dropdown_style ) { dropdown_main.removeClass( 'uael-mc-dropdown-close' ); } }, function( e ) { e.preventDefault(); if( 'dropdown' == cart_dropdown_style ) { dropdown_main.addClass( 'uael-mc-dropdown-close' ); } }); dropdown_main.hover( function( e ) { e.preventDefault(); dropdown_main.removeClass( 'uael-mc-dropdown-close' ); }, function( e ) { e.preventDefault(); dropdown_main.addClass( 'uael-mc-dropdown-close' ); }); } } $( document ).on( 'keyup', function( e ) { if ( 27 == e.keyCode ) { $( '.elementor-widget-uael-mini-cart' ).each( function() { var $this = $( this ); $this.find( '.uael-mc-modal-wrap' ).addClass( 'uael-mc-modal-wrap-close' ); $this.find( '.uael-mc-modal' ).addClass( 'uael-mc-modal-close' ); $this.find( '.uael-mc-offcanvas-wrap' ).addClass( 'uael-mc-offcanvas-wrap-close' ); $this.find( '.uael-mc-offcanvas' ).addClass( 'uael-mc-offcanvas-close' ); } ); } }); dropdown_main.on( 'click', function( e ) { if( 'A' == e.target.nodeName && 'remove remove_from_cart_button' == $( e.target ).attr( 'class' ) ) { $( this ).removeClass( 'uael-mc-dropdown-close' ); return; } e.stopPropagation(); }); $( document ).on( 'click', function( e ) { if( 'A' != e.target.nodeName && 'remove remove_from_cart_button' != $( e.target ).attr( 'class' ) ) { dropdown_main.addClass( 'uael-mc-dropdown-close' ); e.stopPropagation(); } }); }; var WidgetUAELCheckout = function ($scope, $) { var tabs_wrapper = $scope.find('#uael_multistep_container'); var tabs = $scope.find('#uael-tabs'); var tab_panels = $scope.find('#uael-tab-panels'); var first_step = 0; var last_step = 0; var button_prev = $scope.find('#action-prev'); var button_next = $scope.find('#action-next'); var active_step = 1; var uael_script_var = true; var validation_msg = uael_woo_chekout.validation_msg; var woo_checkout = $scope.find('.uael-woo-checkout'); var widget_data = {}; function render_order_review(){ widget_data['widget_id'] = $scope.data('id'); widget_data['page_id'] = woo_checkout.data('page-id'); setTimeout( function () { $(".uael-checkout-review-order-table").addClass("processing").block( { message: null, overlayCSS: { background: "#fff", opacity: 0.6 } }); jQuery.ajax({ type: 'POST', url: uael_wc_script.ajax_url, data: { action: "uae_woo_checkout_update_order_review", content: widget_data, nonce: uael_wc_script.checkout_update_nonce, }, success: function success(data) { $(".uael-checkout-review-order-table").replaceWith(data.order_review); setTimeout(function () { $(".uael-checkout-review-order-table").removeClass("uael-order-review-processing blockUI blockOverlay"); }, 100000); } }); }, 2000 ); } $( document ).on( 'click', '.uael-woo-checkout-order-review .woocommerce-remove-coupon', function (e) { render_order_review(); }); $( '.uael-woo-checkout-coupon form.checkout_coupon' ).submit( function ( event ) { render_order_review(); }); UaelCheckout = { _initialize_uael_checkout: function () { if( tabs_wrapper.length ) { var first_step_tab = tabs.find( 'li.uael-tab a.first' ); first_step = first_step_tab.data( 'step' ); last_step = tabs.find( 'li.uael-tab a.last' ).data( 'step' ); UaelCheckout._jump_to_step( first_step, first_step_tab ); tabs.find( 'li.uael-tab a' ).on( 'click', function() { var $this = $( this ); var step_number = $this.data( 'step' ); if( step_number < active_step ) { UaelCheckout._jump_to_step( step_number, $this ); } }); button_prev.on( 'click', function() { var step_number = active_step - 1; if( step_number >= first_step ) { UaelCheckout._jump_to_step( step_number, false ); UaelCheckout._scroll_to_top(); } }); button_next.on( 'click', function() { var step_number = active_step + 1; if( step_number <= last_step ) { if( uael_script_var ) { UaelCheckout._validate_checkout_step( active_step, step_number ); }else{ UaelCheckout._jump_to_step( step_number, false ); UaelCheckout._scroll_to_top(); } } }); } }, _validate_checkout_step: function ( active_step, next_step ) { var valid = UaelCheckout._validate_step_fields( active_step ); if( valid ) { tabs.find( '#step-' + active_step ).addClass( 'uael-finished-step' ); UaelCheckout._jump_to_step( next_step, false ); UaelCheckout._scroll_to_top(); }else{ UaelCheckout._display_error_message(); UaelCheckout._scroll_to_error(); } }, _scroll_to_error: function () { var error_class = $scope.find( '#uael_multistep_container .woocommerce-error' ); $scope.find( 'html, body' ).animate({ scrollTop:( error_class.offset().top - 100 ) }, 1000 ); }, _display_error_message: function () { var error_msg = validation_msg; var error = ''; tab_panels.prepend( '
' + error + '
' ); }, _validate_step_fields: function ( active_step ) { UaelCheckout._clear_validation_error(); var active_section = $scope.find( '#uael-tab-panel-' + active_step ); if( active_section ) { var all_inputs = active_section.find( ":input" ).not( '.woocommerce-validated,:hidden' ); var ship_to_different_address = $scope.find( 'input[name="ship_to_different_address"]' ); var is_account_field = $scope.find( '#createaccount' ); var valid = true; $.each( all_inputs, function( field ) { var $this = $( this ); var type = $this.getType(); var name = $this.attr( 'name' ); if( type == 'checkbox' || type == 'select' ) { var formated_name = name.replace( '[]','' ); var parent = $scope.find( '#' + formated_name + '_field' ); } else { var parent = $scope.find( '#' + name + '_field' ); } var is_shipping_field = parent.parents( '.shipping_address' ); if( is_shipping_field.length > 0 && ship_to_different_address.prop( 'checked' ) != true ) { return valid; } var is_disabled_section = parent.parents(); var is_required = ''; if( !( is_disabled_section.length > 0 ) ) { is_required = parent.data( 'validations' ); } var account_required = true; if( is_account_field.length > 0 ) { if( ( is_account_field.prop( 'checked' ) == false ) && ( name == 'account_username' || name == 'account_password' ) ) { account_required = false; } } if( ( parent.hasClass( 'validate-required' ) || is_required == 'validate-required' ) && account_required ) { var value = UaelCheckout._get_field_value( type, $( this ), name ); if( UaelCheckout._isEmpty( value ) ) { valid = false; }else if( parent.hasClass( 'validate-email' ) ) { var valid_email = UaelCheckout._validate_email( value ); if( ! valid_email ) { valid = false; } } } } ); } return valid; }, _isEmpty: function ( str ) { return ( ! str || 0 === str.length ); }, _validate_email: function ( email ) { var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/; if ( reg.test( email ) == false ) { return false; } return true; }, _get_field_value: function ( type, elm, name ) { var value = ''; switch( type ) { case 'radio': value = $scope.find( "input[type=radio][name='" + name + "']:checked" ).val(); value = value ? value : ''; break; case 'checkbox': if( elm.data( 'multiple' ) == 1 ) { var valueArr = []; $scope.find( "input[type=checkbox][name='" + name+ "']:checked" ).each( function() { valueArr.push( $( this ).val() ); } ); value = valueArr; if ( $.isEmptyObject(value ) ) { value = ""; } }else{ value = $scope.find( "input[type=checkbox][name='"+ name + "']:checked").val(); value = value ? value : ''; } break; case 'select': value = elm.val(); break; case 'multiselect': value = elm.val(); break; default: value = elm.val(); break; } return value; }, _clear_validation_error: function () { $scope.find( '.uael_multistep_container .woocommerce-NoticeGroup-checkout, .uael_multistep_container .woocommerce-error, .uael_multistep_container .woocommerce-message, .woocommerce .woocommerce-error' ).remove(); }, _jump_to_step: function ( step_number, step ) { if( ! step ) { step = tabs.find( '#step-' + step_number ); } tabs.find( 'li a' ).removeClass( 'active' ); tabs.find( 'li.uael-tab' ).removeClass( 'uael-tab-after' ); var active_tab_panel = tab_panels.find( '#uael-tab-panel-' + step_number ); if( ! step.hasClass( "active" ) ) { step.addClass( "active" ); step.closest( '.uael-tab' ).addClass( "uael-tab-after" ); } tab_panels.find( 'div.uael-tab-panel' ).not( '#uael-tab-panel-'+step_number ).hide(); active_tab_panel.show(); active_step = step_number; button_prev.prop( 'disabled', false ); button_next.prop( 'disabled', false ); button_prev.removeClass( 'uael-first-prev' ); button_next.removeClass( 'uael-last-next' ); if( active_step == first_step ) { button_prev.prop( 'disabled', true ); button_prev.addClass( 'uael-first-prev' ); } if( active_step == last_step ) { button_next.prop( 'disabled', true ); button_next.addClass( 'uael-last-next' ); } }, _scroll_to_top: function () { if ( tabs_wrapper.length ) { window.scrollTo({ top: 0, behavior: 'smooth' }); } }, _order_review_ajax: function() { woo_checkout.on('change', 'select.shipping_method, input[name^="shipping_method"], #ship-to-different-address input, .update_totals_on_change select, .update_totals_on_change input[type="radio"], .update_totals_on_change input[type="checkbox"], input[name^="billing_postcode"], input[name^="shipping_postcode"]', function () { $(document.body).trigger('update_checkout'); render_order_review(); }); }, } $.fn.getType = function() { try { return this[0].tagName == "INPUT" ? this[0].type.toLowerCase() : this[0].tagName.toLowerCase(); } catch( err ) { return 'E001'; } } UaelCheckout._initialize_uael_checkout(); UaelCheckout._order_review_ajax(); }; $( window ).on( 'elementor/frontend/init', function () { elementorFrontend.hooks.addAction('frontend/element_ready/uael-woo-products.grid-default', WidgetUAELWooProducts); elementorFrontend.hooks.addAction('frontend/element_ready/uael-woo-products.grid-franko', WidgetUAELWooProducts); elementorFrontend.hooks.addAction('frontend/element_ready/uael-woo-add-to-cart.default', WidgetUAELWooAddToCart); elementorFrontend.hooks.addAction('frontend/element_ready/uael-woo-categories.default', WidgetUAELWooCategories); elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-mini-cart.default', WidgetUAELMiniCart ); elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-woo-checkout.default', WidgetUAELCheckout ); }); } )( jQuery );