PATH:
home
/
letacommog
/
newrdv1
/
wp-content
/
plugins1
/
yith-woocommerce-wishlist
/
assets
/
js
/
unminified
/** * Main YITH WooCommerce Wishlist JS * * @author YITH * @package YITH WooCommerce Wishlist * @version 3.0.0 */ jQuery( document ).ready( function( $ ){ /* === MAIN INIT === */ $(document).on( 'yith_wcwl_init', function(){ var t = $(this), cart_redirect_after_add = ( typeof( wc_add_to_cart_params ) !== 'undefined' && wc_add_to_cart_params !== null ) ? wc_add_to_cart_params.cart_redirect_after_add : ''; t.on( 'click', '.add_to_wishlist', function( ev ) { var t = $( this), product_id = t.attr( 'data-product-id' ), el_wrap = $( '.add-to-wishlist-' + product_id ), data = { add_to_wishlist: product_id, product_type: t.data( 'product-type' ), wishlist_id: t.data( 'wishlist-id' ), action: yith_wcwl_l10n.actions.add_to_wishlist_action, fragments: retrieve_fragments( product_id ) }; ev.preventDefault(); jQuery( document.body ).trigger( 'adding_to_wishlist' ); if( yith_wcwl_l10n.multi_wishlist && yith_wcwl_l10n.modal_enable ){ var wishlist_popup_container = t.parents( '.yith-wcwl-popup-footer' ).prev( '.yith-wcwl-popup-content' ), wishlist_popup_select = wishlist_popup_container.find( '.wishlist-select' ), wishlist_popup_name = wishlist_popup_container.find( '.wishlist-name' ), wishlist_popup_visibility = wishlist_popup_container.find( '.wishlist-visibility' ).filter(':checked'); data.wishlist_id = wishlist_popup_select.is(':visible') ? wishlist_popup_select.val() : 'new'; data.wishlist_name = wishlist_popup_name.val(); data.wishlist_visibility = wishlist_popup_visibility.val(); if( 'new' === data.wishlist_id && ! data.wishlist_name ){ wishlist_popup_name.closest('p').addClass('woocommerce-invalid'); return false; } else{ wishlist_popup_name.closest('p').removeClass('woocommerce-invalid'); } } if( ! is_cookie_enabled() ){ alert( yith_wcwl_l10n.labels.cookie_disabled ); return; } $.ajax({ type: 'POST', url: yith_wcwl_l10n.ajax_url, data: data, dataType: 'json', beforeSend: function(){ block( t ); }, complete: function(){ unblock( t ); }, success: function( response ) { var response_result = response.result, response_message = response.message; if( yith_wcwl_l10n.multi_wishlist ) { // close PrettyPhoto popup close_pretty_photo( response_message ); // update options for all wishlist selects if( typeof( response.user_wishlists ) != 'undefined' ) { update_wishlists( response.user_wishlists ); } } else { print_message(response_message); } if( response_result === "true" || response_result === "exists" ) { if( typeof response.fragments != 'undefined' ) { replace_fragments( response.fragments ); } if( ! yith_wcwl_l10n.multi_wishlist || yith_wcwl_l10n.hide_add_button ) { el_wrap.find('.yith-wcwl-add-button').remove(); } el_wrap.addClass('exists'); } init_handling_after_ajax(); $('body').trigger('added_to_wishlist', [ t, el_wrap ] ); } }); return false; } ); t.on( 'click', '.wishlist_table .remove_from_wishlist', function( ev ){ var t = $( this ); ev.preventDefault(); remove_item_from_wishlist( t ); return false; } ); t.on( 'adding_to_cart', 'body', function( ev, button, data ){ if( typeof button != 'undefined' && typeof data != 'undefined' && button.closest( '.wishlist_table' ).length ){ data.remove_from_wishlist_after_add_to_cart = button.closest( '[data-row-id]' ).data( 'row-id' ); data.wishlist_id = button.closest( '.wishlist_table' ).data( 'id' ); typeof wc_add_to_cart_params !== 'undefined' && ( wc_add_to_cart_params.cart_redirect_after_add = yith_wcwl_l10n.redirect_to_cart ); typeof yith_wccl_general !== 'undefined' && ( yith_wccl_general.cart_redirect = yith_wcwl_l10n.redirect_to_cart ); } } ); t.on( 'added_to_cart', 'body', function( ev, fragments, carthash, button ){ if( typeof button != 'undefined' && button.closest( '.wishlist_table' ).length ) { typeof wc_add_to_cart_params !== 'undefined' && ( wc_add_to_cart_params.cart_redirect_after_add = cart_redirect_after_add ); typeof yith_wccl_general !== 'undefined' && ( yith_wccl_general.cart_redirect = cart_redirect_after_add ); var tr = button.closest('[data-row-id]'), table = tr.closest('.wishlist-fragment'), options = table.data('fragment-options'); button.removeClass('added'); tr.find('.added_to_cart').remove(); if ( yith_wcwl_l10n.remove_from_wishlist_after_add_to_cart && options.is_user_owner ) { tr.remove(); } } } ); t.on( 'added_to_cart', 'body', function(){ var messages = $( '.woocommerce-message'); if( messages.length === 0 ){ $( '#yith-wcwl-form').prepend( yith_wcwl_l10n.labels.added_to_cart_message ); } else{ messages.fadeOut( 300, function(){ $(this).replaceWith( yith_wcwl_l10n.labels.added_to_cart_message ).fadeIn(); } ); } } ); t.on( 'cart_page_refreshed', 'body', init_handling_after_ajax ); t.on( 'click', '.show-title-form', show_title_form ); t.on( 'click', '.wishlist-title-with-form h2', show_title_form ); t.on( 'click', '.remove_from_all_wishlists', function( ev ){ var t = $(this), prod_id = t.attr('data-product-id'), wishlist_id = t.data('wishlist-id'), content = t.closest( '.content' ), data = { action: yith_wcwl_l10n.actions.remove_from_all_wishlists, prod_id: prod_id, wishlist_id: wishlist_id, fragments: retrieve_fragments( prod_id ) }; ev.preventDefault(); $.ajax({ beforeSend: function(){ block( content ); }, complete: function(){ unblock( content ); }, data: data, dataType: 'json', method: 'post', success: function( data ){ if( typeof data.fragments != 'undefined' ){ replace_fragments( data.fragments ); } init_handling_after_ajax(); }, url: yith_wcwl_l10n.ajax_url }); } ); t.on( 'click', '.hide-title-form', hide_title_form ); t.on( 'click', '.save-title-form', submit_title_form ); t.on( 'change', '.wishlist_manage_table .wishlist-visibility', save_privacy ); t.on( 'change', '.change-wishlist', function(){ var t = $(this), table = t.parents( '.cart.wishlist_table'), wishlist_token = table.data('token'), item_id = t.parents( '[data-row-id]').data('row-id'), to_token = t.val(); call_ajax_move_item_to_another_wishlist( { wishlist_token : wishlist_token, destination_wishlist_token: to_token, item_id : item_id, fragments : retrieve_fragments() }, function(){ block( table ); }, function( data ){ if( typeof data.fragments != 'undefined' ) { replace_fragments( data.fragments ); } unblock( table ); } ); } ); t.on( 'click', '.yith-wcwl-popup-footer .move_to_wishlist', function(){ var t = $(this), product_id = t.attr('data-product-id'), wishlist_token = t.data('origin-wishlist-id'), form = t.closest('form'), to_token = form.find('.wishlist-select').val(), wishlist_name_field = form.find('.wishlist-name'), wishlist_name = wishlist_name_field.val(), wishlist_visibility = form.find('.wishlist-visibility').filter(':checked').val(); if( 'new' === to_token && ! wishlist_name ){ wishlist_name_field.closest('p').addClass('woocommerce-invalid'); return false; } else{ wishlist_name_field.closest('p').removeClass('woocommerce-invalid'); } call_ajax_move_item_to_another_wishlist( { wishlist_token : wishlist_token, destination_wishlist_token: to_token, item_id : product_id, wishlist_name : wishlist_name, wishlist_visibility : wishlist_visibility, fragments : retrieve_fragments( product_id ) }, function(){ block( t ); }, function( response ){ var response_message = response.message; if( yith_wcwl_l10n.multi_wishlist ) { close_pretty_photo( response_message ); if( typeof( response.user_wishlists ) != 'undefined' ){ update_wishlists( response.user_wishlists ); } } else { print_message(response_message); } if( typeof response.fragments != 'undefined' ) { replace_fragments( response.fragments ); } init_handling_after_ajax(); unblock( t ); } ); } ); t.on( 'click', '.delete_item', function(){ var t = $(this), product_id = t.attr('data-product-id'), item_id = t.data('item-id'), el_wrap = $( '.add-to-wishlist-' + product_id ); $.ajax( { url: yith_wcwl_l10n.ajax_url, data : { action: yith_wcwl_l10n.actions.delete_item_action, item_id: item_id, fragments: retrieve_fragments( product_id ) }, dataType: 'json', beforeSend: function(){ block( t ) }, complete: function(){ unblock( t ); }, method: 'post', success: function( response ){ var fragments = response.fragments, response_message = response.message; if( yith_wcwl_l10n.multi_wishlist ) { close_pretty_photo( response_message ); } if( ! t.closest( '.yith-wcwl-remove-button' ).length ){ print_message(response_message); } if( typeof fragments != 'undefined' ){ replace_fragments( fragments ); } init_handling_after_ajax(); $('body').trigger('removed_from_wishlist', [ t, el_wrap ] ); } } ); return false; } ); t.on( 'change', '.yith-wcwl-popup-content .wishlist-select', function(){ var t = $(this); if( t.val() === 'new' ){ t.parents( '.yith-wcwl-first-row' ).next( '.yith-wcwl-second-row' ).show(); } else{ t.parents( '.yith-wcwl-first-row' ).next( '.yith-wcwl-second-row' ).hide(); } } ); t.on( 'change', '#bulk_add_to_cart', function(){ var t = $(this), checkboxes = t.closest( '.wishlist_table' ).find( '[data-row-id]' ).find( 'input[type="checkbox"]:not(:disabled)' ); if( t.is( ':checked' ) ){ checkboxes.attr( 'checked','checked').change(); } else{ checkboxes.removeAttr( 'checked').change(); } } ); t.on( 'submit', '.wishlist-ask-an-estimate-popup', function(){ var t = $(this), form = t.closest( 'form' ), pp_content = t.closest('.pp_content'), data = form.serialize(); $.ajax({ beforeSend: function(){ block( form ); }, complete: function(){ unblock( form ); }, data: data + '&action=' + yith_wcwl_l10n.actions.ask_an_estimate, dataType: 'json', method: 'post', success: function( data ){ if( typeof data.result != 'undefined' && data.result ){ var template = data.template; if( typeof template != 'undefined' ){ form.replaceWith( template ); pp_content.css('height', 'auto'); setTimeout( close_pretty_photo, 3000 ); } } else if( typeof data.message != 'undefined' ){ form.find( '.woocommerce-error' ).remove(); form.find( '.popup-description' ).after( $('<div>', { text: data.message, class: 'woocommerce-error' } ) ) } }, url: yith_wcwl_l10n.ajax_url }); return false; } ); t.on( 'click', '.yith-wfbt-add-wishlist', function(e){ e.preventDefault(); var t = $(this), form = $( '#yith-wcwl-form' ); $('html, body').animate({ scrollTop: ( form.offset().top) },500); // ajax call reload_wishlist_and_adding_elem( t, form ); }); t.on( 'submit', '.yith-wcwl-popup-form', function(){ return false; } ); t.on( 'yith_infs_added_elem', function(){ init_wishlist_pretty_photo(); } ); t.on( 'found_variation', function( ev, variation ){ var t = $( ev.target ), product_id = t.data( 'product_id' ), variation_id = variation.variation_id, targets = $('.add_to_wishlist[data-product-id="' + product_id + '"]').add('.add_to_wishlist[data-original-product-id="' + product_id + '"]'); if( ! product_id || ! variation_id || ! targets.length ){ return; } targets.each( function(){ var t = $(this), container = t.closest( '.yith-wcwl-add-to-wishlist' ), options; t.attr( 'data-original-product-id', product_id ); t.attr( 'data-product-id', variation_id ); console.log(t, t.attr('data-product-id')); if( container.length ) { options = container.data( 'fragment-options' ); if( typeof options != 'undefined' ){ options.product_id = variation_id; container.data( 'fragment-options', options ); } container .removeClass(function (i, classes) { return classes.match(/add-to-wishlist-\S+/g).join(' '); }) .addClass('add-to-wishlist-' + variation_id) .attr('data-fragment-ref', variation_id); } } ); } ); t.on( 'reset_data', function( ev ){ var t = $( ev.target ), product_id = t.data( 'product_id' ), targets = $('.add_to_wishlist[data-original-product-id="' + product_id + '"]'); if( ! product_id || ! targets.length ){ return; } targets.each( function(){ var t = $(this), container = t.closest( '.yith-wcwl-add-to-wishlist' ), variation_id = t.attr( 'data-product-id' ), options; t.attr( 'data-product-id', product_id ); t.attr( 'data-original-product-id', '' ); if( container.length ) { options = container.data( 'fragment-options' ); if( typeof options != 'undefined' ){ options.product_id = product_id; container.data( 'fragment-options', options ); } container .removeClass('add-to-wishlist-' + variation_id) .addClass('add-to-wishlist-' + product_id) .attr('data-fragment-ref', product_id); } } ); } ); t.on( 'yith_wcwl_reload_fragments', load_fragments ); t.on( 'yith_infs_added_elem', function( ev, elem ){ load_fragments( { container: elem, firstLoad: false } ); } ); t.on( 'yith_wcwl_fragments_loaded', function( ev ){ $( '.variations_form' ).find( '.variations select' ).last().change(); } ); t.on( 'click', '.yith-wcwl-popup-feedback .close-popup', function(){ close_pretty_photo(); } ) init_wishlist_popup(); init_wishlist_tooltip(); init_wishlist_dropdown(); init_wishlist_drag_n_drop(); init_quantity(); init_wishlist_details_popup(); init_wishlist_popup_tabs(); init_select_box(); init_checkbox_handling(); init_wishlist_pretty_photo(); init_add_to_cart_icon(); init_wishlist_responsive(); init_copy_wishlist_link(); load_fragments(); } ).trigger('yith_wcwl_init'); /* === INIT FUNCTIONS === */ /** * Adds selectbox where needed * * @return void * @since 3.0.0 */ function init_select_box() { if( typeof $.fn.selectBox != 'undefined' ) { $('select.selectBox').filter(':visible').not('.enhanced').selectBox().addClass('enhanced'); } } /** * Init PrettyPhoto for all links withi the plugin that open a popup * * @return void * @since 2.0.16 */ function init_wishlist_pretty_photo() { if( typeof $.prettyPhoto == 'undefined' ){ return; } var ppParams = { hook : 'data-rel', social_tools : false, theme : 'pp_woocommerce', horizontal_padding : 20, opacity : 0.8, deeplinking : false, overlay_gallery : false, default_width : 500, changepicturecallback : function(){ init_select_box(); $('.wishlist-select').change(); $(document).trigger( 'yith_wcwl_popup_opened', [ this ] ); }, markup: '<div class="pp_pic_holder">' + '<div class="ppt"> </div>' + '<div class="pp_top">' + '<div class="pp_left"></div>' + '<div class="pp_middle"></div>' + '<div class="pp_right"></div>' + '</div>' + '<div class="pp_content_container">' + '<div class="pp_left">' + '<div class="pp_right">' + '<div class="pp_content">' + '<div class="pp_loaderIcon"></div>' + '<div class="pp_fade">' + '<a href="#" class="pp_expand" title="Expand the image">Expand</a>' + '<div class="pp_hoverContainer">' + '<a class="pp_next" href="#">next</a>' + '<a class="pp_previous" href="#">previous</a>' + '</div>' + '<div id="pp_full_res"></div>' + '<div class="pp_details">' + '<a class="pp_close" href="#">Close</a>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '<div class="pp_bottom">' + '<div class="pp_left"></div>' + '<div class="pp_middle"></div>' + '<div class="pp_right"></div>' + '</div>' + '</div>' + '<div class="pp_overlay yith-wcwl-overlay"></div>' }; $('a[data-rel^="prettyPhoto[add_to_wishlist_"]') .add('a[data-rel="prettyPhoto[ask_an_estimate]"]') .add('a[data-rel="prettyPhoto[create_wishlist]"]') .unbind( 'click' ) .prettyPhoto( ppParams ); $('a[data-rel="prettyPhoto[move_to_another_wishlist]"]').on( 'click', function(){ var t = $(this), popup = $('#move_to_another_wishlist'), form = popup.find('form'), row_id = form.find( '.row-id' ), id = t.closest('[data-row-id]').data('row-id'); if( row_id.length ){ row_id.remove(); } form.append( '<input type="hidden" name="row_id" class="row-id" value="' + id + '"/>' ); } ).prettyPhoto( ppParams ); // add & remove class to body when popup is opened var observer = new MutationObserver( function( mutationsList, observer ){ for ( var i in mutationsList ) { var mutation = mutationsList[ i ]; if ( mutation.type === 'childList' ) { typeof mutation.addedNodes !== 'undefined' && mutation.addedNodes.forEach( function( currentValue ){ if( typeof currentValue.classList !== 'undefined' && currentValue.classList.contains( 'yith-wcwl-overlay' ) ){ $('body').addClass( 'yith-wcwl-with-pretty-photo' ); } } ); typeof mutation.removedNodes !== 'undefined' && mutation.removedNodes.forEach( function( currentValue ){ if( typeof currentValue.classList !== 'undefined' && currentValue.classList.contains( 'yith-wcwl-overlay' ) ){ $('body').removeClass( 'yith-wcwl-with-pretty-photo' ); } } ); } } } ); observer.observe( document.body, { childList: true } ); } /** * Init checkbox handling * * @return void * @since 3.0.0 */ function init_checkbox_handling() { var checkboxes = $('.wishlist_table').find('.product-checkbox input[type="checkbox"]'); checkboxes.off('change').on( 'change', function(){ var t = $(this), p = t.parent(); p .removeClass( 'checked' ) .removeClass( 'unchecked' ) .addClass( t.is(':checked') ? 'checked' : 'unchecked' ); } ).trigger('change'); } /** * Show icon on Add to Cart button * * @return void */ function init_add_to_cart_icon() { $('.add_to_cart').filter('[data-icon]').not('.icon-added').each( function(){ var t = $(this), data = t.data('icon'), icon; if( data.match( /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi ) ){ icon = $( '<img/>', { src: data } ); } else{ icon = $( '<i/>', { class: 'fa ' + data } ); } t.prepend( icon ).addClass('icon-added'); } ) } /** * Init js handling on wishlist table items after ajax update * * @return void * @since 2.0.7 */ function init_handling_after_ajax() { init_select_box(); init_wishlist_pretty_photo(); init_checkbox_handling(); init_add_to_cart_icon(); init_wishlist_dropdown(); init_wishlist_tooltip(); init_wishlist_details_popup(); init_wishlist_drag_n_drop(); init_copy_wishlist_link(); $(document).trigger( 'yith_wcwl_init_after_ajax' ); } /** * Add tooltip to Add to Wishlist buttons * * @return void * @since 3.0.0 */ function init_wishlist_tooltip() { if( ! yith_wcwl_l10n.enable_tooltip ){ return; } $('.yith-wcwl-add-to-wishlist').find('[data-title]').each( function(){ var t = $(this); if( t.hasClass( 'tooltip-added' ) ){ return; } t .on('mouseenter', function () { var t = $(this), tooltip = null, wrapperWidth = t.outerWidth(), left = 0, width = 0; tooltip = $('<span>', {class: 'yith-wcwl-tooltip', text: t.data('title')}); t.append(tooltip); width = tooltip.outerWidth() + 6; tooltip.outerWidth(width); left = (wrapperWidth - width) / 2; tooltip.css({left: left.toFixed(0) + 'px'}).fadeIn(200); t.addClass('with-tooltip'); }) .on('mouseleave', function () { var t = $(this); t.find('.yith-wcwl-tooltip').fadeOut(200, function(){ t.removeClass('with-tooltip').find('.yith-wcwl-tooltip').remove(); }); }); t.addClass('tooltip-added'); } ); } /** * Add wishlist popup message * * @return void * @since 2.0.0 */ function init_wishlist_popup() { if( typeof yith_wcwl_l10n.enable_notices != 'undefined' && ! yith_wcwl_l10n.enable_notices ){ return; } if( $('.yith-wcwl-add-to-wishlist').length && ! $( '#yith-wcwl-popup-message' ).length ) { var message_div = $( '<div>' ) .attr( 'id', 'yith-wcwl-message' ), popup_div = $( '<div>' ) .attr( 'id', 'yith-wcwl-popup-message' ) .html( message_div ) .hide(); $( 'body' ).prepend( popup_div ); } } /** * Add Dropdown to Add to Wishlist when modal is disabled and Multi Wishlist enabled * * @return void * @since 3.0.0 */ function init_wishlist_dropdown() { $('.yith-wcwl-add-button').filter('.with-dropdown') .on( 'mouseleave', function(){ var t = $(this), dropdown = t.find('.yith-wcwl-dropdown'); if( dropdown.length ) { dropdown.fadeOut(200); } } ) .children('a') .on( 'mouseenter', function(){ var t = $(this), el_wrap = t.closest('.with-dropdown'), dropdown = el_wrap.find('.yith-wcwl-dropdown'); if( dropdown.length && dropdown.children().length ){ el_wrap.find('.yith-wcwl-dropdown').fadeIn(200); } } ); } /** * Handle Drag & Drop of wishlist items for sorting * * @return void * @since 3.0.0 */ function init_wishlist_drag_n_drop() { if( typeof yith_wcwl_l10n.enable_drag_n_drop === 'undefined' || ! yith_wcwl_l10n.enable_drag_n_drop ){ return; } $('.wishlist_table').filter('.sortable').not('.no-interactions').each( function(){ var t = $(this), jqxhr = false; t.sortable( { items: '[data-row-id]', helper: function( e, ui ){ ui.children().each(function() { $(this).width($(this).width()); }); return ui; }, update: function(){ var row = t.find('[data-row-id]'), positions = []; if( ! row.length ){ return; } if( jqxhr ){ jqxhr.abort(); } row.each( function(){ var t = $(this); positions.push( t.data('row-id') ); } ); jqxhr = $.ajax({ data: { action: yith_wcwl_l10n.actions.sort_wishlist_items, positions: positions, wishlist_token: t.data('token'), page: t.data('page'), per_page: t.data('per-page') }, method: 'POST', url: yith_wcwl_l10n.ajax_url }); } } ); } ); } /** * Handle quantity input change for each wishlist item * * @return void * @since 3.0.0 */ function init_quantity() { var jqxhr, timeout; $('.wishlist_table').on( 'change', '.product-quantity input', function(){ var t = $(this), row = t.closest('[data-row-id]'), product_id = row.data('row-id'), table = t.closest('.wishlist_table'), token = table.data('token'); clearTimeout( timeout ); // set add to cart link to add specific qty to cart row.find( '.add_to_cart' ).data('quantity', t.val()); timeout = setTimeout( function(){ if( jqxhr ){ jqxhr.abort(); } jqxhr = $.ajax({ beforeSend: function(){ block( table ); }, complete: function(){ unblock( table ); }, data: { product_id: product_id, wishlist_token: token, quantity: t.val(), action: yith_wcwl_l10n.actions.update_item_quantity }, method: 'POST', url: yith_wcwl_l10n.ajax_url }); }, 1000 ); } ); } /** * Init handling for copy button * * @return void * @since 2.2.11 */ function init_copy_wishlist_link () { $('.copy-trigger').on('click', function () { var obj_to_copy = $('.copy-target'); if (obj_to_copy.length > 0) { if (obj_to_copy.is('input')) { if (isOS()) { obj_to_copy[0].setSelectionRange(0, 9999); } else { obj_to_copy.select(); } document.execCommand("copy"); } else { var hidden = $('<input/>', { val : obj_to_copy.text(), type: 'text' }); b('body').append(hidden); if (isOS()) { hidden[0].setSelectionRange(0, 9999); } else { hidden.select(); } document.execCommand('copy'); hidden.remove(); } } }); } /** * Handle popup for images grid layout * * @return void * @since 3.0.0 */ function init_wishlist_details_popup() { $('.wishlist_table').filter('.images_grid').not('.enhanced') .on( 'click', '[data-row-id] .product-thumbnail a', function(ev){ var t = $(this), item = t.closest('[data-row-id]'), items = item.siblings( '[data-row-id]' ), popup = item.find('.item-details'); ev.preventDefault(); if( popup.length ){ items.removeClass('show'); item.toggleClass( 'show' ); } } ) .on( 'click', '[data-row-id] a.close', function (ev){ var t = $(this), item = t.closest('[data-row-id]'), popup = item.find('.item-details'); ev.preventDefault(); if( popup.length ){ item.removeClass('show'); } } ) .on( 'click', '[data-row-id] a.remove_from_wishlist', function(ev){ var t = $(this); ev.stopPropagation(); remove_item_from_wishlist( t ); return false; } ) .addClass( 'enhanced' ); $(document) .on( 'click', function( ev ){ if( ! $( ev.target ).closest( '[data-row-id]' ).length ){ $('.wishlist_table').filter('.images_grid').find('.show').removeClass('show'); } } ) .on( 'added_to_cart', function(){ $('.wishlist_table').filter('.images_grid').find('.show').removeClass('show'); } ); } /** * Handle tabs inside wishlist popups * * @return void * @since 3.0.0 */ function init_wishlist_popup_tabs() { $(document).on( 'click', '.show-tab', function(ev){ var t = $(this), container = t.closest('.yith-wcwl-popup-content'), tab = t.data('tab'), target = container.find('.tab').filter( '.' + tab ); ev.preventDefault(); if( ! target.length ){ return false; } t.addClass('active').siblings('.show-tab').removeClass('active'); target.show().siblings('.tab').hide(); if( 'create' === tab ){ container.prepend( '<input type="hidden" id="new_wishlist_selector" class="wishlist-select" value="new">' ); } else{ container.find( '#new_wishlist_selector' ).remove(); } } ); $(document).on( 'change', '.wishlist-select', function(ev){ var t = $(this), container = t.closest('.yith-wcwl-popup-content'), tab = t.closest( '.tab' ), createTab = container.find( '.tab.create' ), showTab = container.find( '.show-tab' ), createShowTab = showTab.filter( '[data-tab="create"]' ), val = t.val(); if( val === 'new' && createTab.length ){ tab.hide(); createTab.show(); showTab.removeClass( 'active' ); createShowTab.addClass( 'active' ); t.find('option').removeProp( 'selected' ); t.change(); } } ) } /** * Init responsive behaviour of the wishlist * * @return void * @since 3.0.0 */ function init_wishlist_responsive() { var jqxhr = false; if( ! yith_wcwl_l10n.is_wishlist_responsive ){ return; } $( window ).on( 'resize', function( ev ){ var table = $('.wishlist_table.responsive'), mobile = table.is('.mobile'), media = window.matchMedia( '(max-width: 768px)' ), form = table.closest('form'), id = form.attr('class'), options = form.data('fragment-options'), fragments = {}, load = false; if( ! table.length ){ return; } if( media.matches && table && ! mobile ){ options.is_mobile = 'yes'; load = true; } else if( ! media.matches && table && mobile ){ options.is_mobile = 'no'; load = true; } if( load ){ if( jqxhr ){ jqxhr.abort(); } fragments[ id ] = options; jqxhr = $.ajax( { beforeSend: function(){ block( table ); }, complete: function(){ unblock( table ); }, data: { action: yith_wcwl_l10n.actions.load_mobile_action, fragments: fragments }, method: 'post', success: function( data ){ if( typeof data.fragments != 'undefined' ){ replace_fragments( data.fragments ); init_handling_after_ajax(); $(document).trigger( 'yith_wcwl_responsive_template', [ mobile, data.fragments ] ); } }, url: yith_wcwl_l10n.ajax_url } ); } } ); } /* === EVENT HANDLING === */ /** * Move item to another wishlist * * @return void * @since 3.0.0 */ function call_ajax_move_item_to_another_wishlist( data, beforeSend, complete ) { data.action = yith_wcwl_l10n.actions.move_to_another_wishlist_action; if( data.wishlist_token === '' || data.destination_wishlist_token === '' || data.item_id === '' ){ return; } $.ajax( { beforeSend: beforeSend, url: yith_wcwl_l10n.ajax_url, data: data, dataType: 'json', method: 'post', success: function( response ){ complete( response ); init_handling_after_ajax(); $('body').trigger('moved_to_another_wishlist', [ $(this), data.item_id ] ); } }); } /** * Remove a product from the wishlist. * * @param el * @return void * @since 1.0.0 */ function remove_item_from_wishlist( el ) { var table = el.parents( '.cart.wishlist_table' ), row = el.parents( '[data-row-id]' ), data_row_id = row.data( 'row-id'), wishlist_id = table.data( 'id' ), wishlist_token = table.data( 'token' ), data = { action: yith_wcwl_l10n.actions.remove_from_wishlist_action, remove_from_wishlist: data_row_id, wishlist_id: wishlist_id, wishlist_token: wishlist_token, fragments: retrieve_fragments( data_row_id ) }; $.ajax( { beforeSend: function(){ block( table ); }, complete: function(){ unblock( table ); }, data: data, method: 'post', success: function( data ){ if( typeof data.fragments != 'undefined' ){ replace_fragments( data.fragments ); } init_handling_after_ajax(); $('body').trigger('removed_from_wishlist', [ el, row ] ); }, url: yith_wcwl_l10n.ajax_url } ); } /** * Remove a product from the wishlist. * * @param el * @param form * @return void * @since 1.0.0 */ function reload_wishlist_and_adding_elem( el, form ) { var product_id = el.data( 'data-product-id' ), table = $(document).find( '.cart.wishlist_table' ), pagination = table.data( 'pagination' ), per_page = table.data( 'per-page' ), wishlist_id = table.data( 'id' ), wishlist_token = table.data( 'token' ), data = { action: yith_wcwl_l10n.actions.reload_wishlist_and_adding_elem_action, pagination: pagination, per_page: per_page, wishlist_id: wishlist_id, wishlist_token: wishlist_token, add_to_wishlist: product_id, product_type: el.data( 'product-type' ) }; if( ! is_cookie_enabled() ){ alert( yith_wcwl_l10n.labels.cookie_disabled ); return } $.ajax({ type: 'POST', url: yith_wcwl_l10n.ajax_url, data: data, dataType : 'html', beforeSend: function(){ block( table ); }, complete: function(){ unblock( table ); }, success: function(res) { var obj = $(res), new_form = obj.find('#yith-wcwl-form'); // get new form form.replaceWith( new_form ); init_handling_after_ajax(); } }); } /** * Show form to edit wishlist title * * @param ev event * @return void * @since 2.0.0 */ function show_title_form( ev ) { var t = $(this), table = t.closest( '.wishlist_table' ), title = null; ev.preventDefault(); // if button is in table if( table.length ){ title = t.closest('[data-wishlist-id]').find('.wishlist-title'); } else{ title = t.parents( '.wishlist-title' ); } title.next().show().find('input[type="text"]').focus(); title.hide(); } /** * Hide form to edit wishlist title * * @param ev event * @return void * @since 2.0.0 */ function hide_title_form( ev ) { var t = $(this); ev.preventDefault(); t.parents( '.hidden-title-form').hide(); t.parents( '.hidden-title-form').prev().show(); } /** * Submit form to save a new wishlist title * * @param ev event * @return void * @since 2.0.7 */ function submit_title_form( ev ) { var t = $(this), form = t.closest( '.hidden-title-form' ), row = t.closest( '[data-wishlist-id]' ), wishlist_id = row.data( 'wishlist-id' ), title_input = form.find( 'input[type="text"]' ), new_title = title_input.val(), data = {}; ev.preventDefault(); if( ! new_title ){ form.addClass('woocommerce-invalid'); title_input.focus(); return; } data = { action: yith_wcwl_l10n.actions.save_title_action, wishlist_id: wishlist_id, title: new_title, fragments: retrieve_fragments() }; $.ajax({ type: 'POST', url: yith_wcwl_l10n.ajax_url, data: data, dataType: 'json', beforeSend: function(){ block( form ); }, complete: function(){ unblock( form ); }, success: function( response ) { var fragments = response.fragments, status = response.result; if( status ) { form.hide(); form.prev().find('.wishlist-anchor').text( new_title ).end().show(); } else{ form.addClass( 'woocommerce-invalid' ); title_input.focus(); } if( typeof fragments != 'undefined' ){ replace_fragments( fragments ); } } }); } /** * Submit form to save a new wishlist privacy * * @param ev event * @return void * @since 2.0.7 */ function save_privacy( ev ){ var t = $(this), new_privacy = t.val(), row = t.closest( '[data-wishlist-id]' ), wishlist_id = row.data( 'wishlist-id' ), data = { action: yith_wcwl_l10n.actions.save_privacy_action, wishlist_id: wishlist_id, privacy: new_privacy, fragments: retrieve_fragments() }; $.ajax({ type: 'POST', url: yith_wcwl_l10n.ajax_url, data: data, dataType: 'json', success: function( response ) { var fragments = response.fragments; if( typeof fragments != 'undefined' ){ replace_fragments( fragments ); } } }); } /* === UTILS === */ /** * Closes pretty photo popup, if any * * @return void * @since 3.0.0 */ function close_pretty_photo( message ) { if( typeof $.prettyPhoto != 'undefined' && typeof $.prettyPhoto.close != 'undefined' ) { if( typeof message != 'undefined' ){ var container = $('.pp_content_container'), content = container.find('.pp_content'), form = container.find('.yith-wcwl-popup-form'), popup = form.closest( '.pp_pic_holder' ); if( form.length ){ var new_content = $( '<div/>', { class: 'yith-wcwl-popup-feedback' } ); new_content.append( $( '<i/>', { class: 'fa fa-check heading-icon' } ) ); new_content.append( $( '<p/>', { class: 'feedback', html: message } ) ); new_content.css( 'display', 'none' ); content.css( 'height', 'auto' ); form.after( new_content ); form.fadeOut( 200, function(){ new_content.fadeIn(); } ); popup.addClass( 'feedback' ); popup.css( 'left', ( ( $( window ).innerWidth() / 2 ) - ( popup.outerWidth() / 2 ) ) + 'px' ); if( typeof yith_wcwl_l10n.auto_close_popup == 'undefined' || yith_wcwl_l10n.auto_close_popup ) { setTimeout(close_pretty_photo, yith_wcwl_l10n.popup_timeout); } } } else{ try { $.prettyPhoto.close(); } catch( e ){ /* do nothing, no popup to close */ } } } } /** * Print wishlist message for the user * * @var response_message string Message to print * @return void * @since 3.0.0 */ function print_message( response_message ) { var msgPopup = $( '#yith-wcwl-popup-message' ), msg = $( '#yith-wcwl-message' ), timeout = typeof yith_wcwl_l10n.popup_timeout != 'undefined' ? yith_wcwl_l10n.popup_timeout : 3000; if( typeof yith_wcwl_l10n.enable_notices != 'undefined' && ! yith_wcwl_l10n.enable_notices ){ return; } msg.html( response_message ); msgPopup.css( 'margin-left', '-' + $( msgPopup ).width() + 'px' ).fadeIn(); window.setTimeout( function() { msgPopup.fadeOut(); }, timeout ); } /** * Update lists after a new list is added * * @param wishlists array Array of wishlists * @return void * @since 3.0.0 */ function update_wishlists( wishlists ) { var wishlist_select = $( 'select.wishlist-select' ), wishilst_dropdown = $( 'ul.yith-wcwl-dropdown' ); // update options for all wishlist selects wishlist_select.each( function(){ var t = $(this), wishlist_options = t.find( 'option' ), new_option = wishlist_options.filter( '[value="new"]' ); wishlist_options.not(new_option ).remove(); $.each( wishlists, function( i, v ){ $('<option>', { value: v.id, html: v.wishlist_name } ).appendTo(t); } ); t.append( new_option ); } ); // update options for all wishlist dropdown wishilst_dropdown.each( function(){ var t = $(this), wishlist_options = t.find( 'li' ), container = t.closest( '.yith-wcwl-add-button' ), default_button = container.children( 'a.add_to_wishlist' ), product_id = default_button.attr('data-product-id'), product_type = default_button.attr('data-product-type'); wishlist_options.remove(); $.each( wishlists, function( i, v ) { $('<li>').append( $('<a>', { rel: 'nofollow', html: v.wishlist_name, class: 'add_to_wishlist', href: v.add_to_this_wishlist_url, 'data-product-id': product_id, 'data-product-type': product_type, 'data-wishlist-id': v.id } ) ).appendTo(t); } ); } ); } /** * Block item if possible * * @param item jQuery object * @return void * @since 3.0.0 */ function block( item ) { if( typeof $.fn.block != 'undefined' ) { item.fadeTo('400', '0.6').block( { message: null, overlayCSS : { background : 'transparent url(' + yith_wcwl_l10n.ajax_loader_url + ') no-repeat center', backgroundSize: '40px 40px', opacity : 1 } } ); } } /** * Unblock item if possible * * @param item jQuery object * @return void * @since 3.0.0 */ function unblock( item ) { if( typeof $.fn.unblock != 'undefined' ) { item.stop(true).css('opacity', '1').unblock(); } } /** * Check if cookies are enabled * * @return bool * @since 2.0.0 */ function is_cookie_enabled() { if (navigator.cookieEnabled) return true; // set and read cookie document.cookie = "cookietest=1"; var ret = document.cookie.indexOf("cookietest=") !== -1; // delete cookie document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"; return ret; } /** * Retrieve fragments that need to be refreshed in the page * * @param search string Ref to search among all fragments in the page * @return object Object containing a property for each fragments that matches search * @since 3.0.0 */ function retrieve_fragments( search ) { var options = {}, fragments = null; if( search ){ if( typeof search === 'object' ){ search = $.extend( { s: '', container: $(document), firstLoad: false }, search ); fragments = search.container.find( '.wishlist-fragment' ); if( search.s ){ fragments = fragments.not('[data-fragment-ref]').add(fragments.filter('[data-fragment-ref="' + search.s + '"]')); } if( search.firstLoad ){ fragments = fragments.filter( '.on-first-load' ); } } else { fragments = $('.wishlist-fragment'); if (typeof search == 'string' || typeof search == 'number') { fragments = fragments.not('[data-fragment-ref]').add(fragments.filter('[data-fragment-ref="' + search + '"]')); } } } else{ fragments = $('.wishlist-fragment'); } fragments.each( function(){ var t = $(this), id = t.attr('class'); options[ id ] = t.data('fragment-options'); } ); return options; } /** * Load fragments on page loading * * @param search string Ref to search among all fragments in the page * @since 3.0.0 */ function load_fragments( search ) { if( ! yith_wcwl_l10n.enable_ajax_loading ){ return; } search = $.extend( { firstLoad: true }, search ); var fragments = retrieve_fragments( search ); if( ! fragments ){ return; } $.ajax( { data: { action: yith_wcwl_l10n.actions.load_fragments, fragments: fragments }, method: 'post', success: function( data ){ if( typeof data.fragments != 'undefined' ){ replace_fragments( data.fragments ); init_handling_after_ajax(); $(document).trigger( 'yith_wcwl_fragments_loaded', [ fragments, data.fragments ] ); } }, url: yith_wcwl_l10n.ajax_url } ); } /** * Replace fragments with template received * * @param fragments array Array of fragments to replace * @since 3.0.0 */ function replace_fragments( fragments ) { $.each( fragments, function( i, v ){ var itemSelector = '.' + i.split( ' ' ).filter( function(val){ return val.length && val !== 'exists' } ).join( '.' ), toReplace = $( itemSelector ); // find replace tempalte var replaceWith = $(v).filter( itemSelector ); if( ! replaceWith.length ){ replaceWith = $(v).find( itemSelector ); } if( toReplace.length && replaceWith.length ){ toReplace.replaceWith( replaceWith ); } } ) ; } /** * Check if device is an IOS device * @since 2.2.11 */ function isOS() { return navigator.userAgent.match(/ipad|iphone/i); } });
[+]
..
[-] jquery.selectBox.js
[edit]
[-] jquery.yith-wcwl.js
[edit]
[+]
admin