File "jquery.yith-wcwl.js"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/yith-woocommerce-wishlist/assets/js/unminified/jquery.yith-wcwl.js
File size: 46.96 KB
MIME-type: text/plain
Charset: utf-8
/**
* Main YITH WooCommerce Wishlist JS
*
* @author YITH <[email protected]>
* @package YITH WooCommerce Wishlist
* @version 3.0.0
*/
/* globals yith_wcwl_l10n, wc_add_to_cart_params, yith_wccl_general */
jQuery( 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 ),
filtered_data = null,
data = {
action: yith_wcwl_l10n.actions.add_to_wishlist_action,
nonce: yith_wcwl_l10n.nonce.add_to_wishlist_nonce,
context: 'frontend',
add_to_wishlist: product_id,
product_type: t.data( 'product-type' ),
wishlist_id: t.data( 'wishlist-id' ),
fragments: retrieve_fragments( product_id )
};
// allow third party code to filter data
if ( filtered_data = $( document ).triggerHandler( 'yith_wcwl_add_to_wishlist_data', [ t, data ] ) ) {
data = filtered_data;
}
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() ) {
window.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 && yith_wcwl_l10n.modal_enable ) {
// close PrettyPhoto popup
close_pretty_photo( response_message, response_result );
// 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 = isTrue( 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 = isTrue( 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,
nonce: yith_wcwl_l10n.nonce.remove_from_all_wishlists_nonce,
context: 'frontend',
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 ),
data = {
action: yith_wcwl_l10n.actions.delete_item_action,
nonce: yith_wcwl_l10n.nonce.delete_item_nonce,
context: 'frontend',
item_id: item_id,
fragments: retrieve_fragments( product_id )
};
$.ajax( {
url: yith_wcwl_l10n.ajax_url,
data: data,
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.prop( 'checked', 'checked' ).change();
} else {
checkboxes.prop( 'checked', false ).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.serializeArray().reduce( ( data, field ) => {
data[ field.name ] = field.value;
return data;
}, {} );
data.action = yith_wcwl_l10n.actions.ask_an_estimate;
data.nonce = yith_wcwl_l10n.nonce.ask_an_estimate_nonce;
data.context = 'frontend';
$.ajax( {
beforeSend: function () {
block( form );
},
complete: function () {
unblock( form );
},
data: data,
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, yith_wcwl_l10n.time_to_close_prettyphoto );
}
} 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,
target1 = $( '.yith-wcwl-add-to-wishlist' )
.find( '[data-product-id="' + product_id + '"]' ),
target2 = $( '.yith-wcwl-add-to-wishlist' )
.find( '[data-original-product-id="' + product_id + '"]' ),
targets = target1.add( target2 ),
fragments = targets.closest( '.wishlist-fragment' ).filter( ':visible' );
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 );
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 );
}
} );
if ( ! yith_wcwl_l10n.reload_on_found_variation ) {
return;
}
block( fragments );
load_fragments( {
fragments: fragments,
firstLoad: false
} );
} );
t.on( 'reset_data', function ( ev ) {
var t = $( ev.target ),
product_id = t.data( 'product_id' ),
targets = $( '[data-original-product-id="' + product_id + '"]' ),
fragments = targets.closest( '.wishlist-fragment' ).filter( ':visible' );
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 );
}
} );
if ( ! yith_wcwl_l10n.reload_on_found_variation ) {
return;
}
block( fragments );
load_fragments( {
fragments: fragments,
firstLoad: false
} );
} );
t.on( 'yith_wcwl_reload_fragments', ( event, data ) => load_fragments( data ) );
t.on( 'yith_wcwl_reload_after_ajax', init_handling_after_ajax );
t.on( 'yith_infs_added_elem', function ( ev, elem ) {
load_fragments( {
container: elem,
firstLoad: false
} );
} );
t.on( 'yith_wcwl_fragments_loaded', function ( ev, original, update, firstLoad ) {
if ( ! firstLoad ) {
return;
}
$( '.variations_form' ).find( '.variations select' ).last().change();
} );
t.on( 'click', '.yith-wcwl-popup-feedback .close-popup', function ( ev ) {
ev.preventDefault();
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();
if ( yith_wcwl_l10n.enable_ajax_loading ) {
load_fragments();
}
} ).trigger( 'yith_wcwl_init' );
// Avoid pressing the enter key in the qty input.
$( 'form#yith-wcwl-form .wishlist_table .product-quantity input' ).on( 'keypress', function ( e ) {
if ( e.keyCode == '13' ) {
e.preventDefault();
return false;
}
} );
// Move the Add to Wishlist button under the gallery
$( document ).ready( function () {
if ( yith_wcwl_l10n.yith_wcwl_button_position === 'thumbnails' ) {
$( '.woocommerce-product-gallery + div.yith-wcwl-add-to-wishlist' ).appendTo( '.woocommerce-product-gallery' );
}
} );
$( document ).on( 'keydown', '#yith-wcwl-form input[name="wishlist_name"]', function ( event ) {
const key = event.key;
if ( [ 'Enter', 'Escape' ].includes( key ) ) {
const $container = $( this ).closest( '.wishlist-title-container' );
if ( 'Enter' === key ) {
$container.find( 'a.save-title-form' ).trigger( 'click' );
} else {
$container.find( 'a.hide-title-form' ).trigger( 'click' );
}
event.preventDefault();
}
} )
/* === 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 yith-wcwl-pp-modal',
horizontal_padding: 20,
opacity: 0.8,
deeplinking: false,
overlay_gallery: false,
keyboard_shortcuts: false,
default_width: 500,
changepicturecallback: function () {
init_select_box();
$( '.wishlist-select' ).filter( ':visible' ).change();
$( document ).trigger( 'yith_wcwl_popup_opened', [ this ] );
},
markup: '<div class="pp_pic_holder">' +
'<div class="pp_content_container">' +
'<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 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]"]' )
.off( '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 callback = function ( node, op ) {
if ( typeof node.classList !== 'undefined' && node.classList.contains( 'yith-wcwl-overlay' ) ) {
var method = 'remove' === op ? 'removeClass' : 'addClass';
$( 'body' )[ method ]( 'yith-wcwl-with-pretty-photo' );
}
},
callbackAdd = function ( node ) {
callback( node, 'add' );
},
callbackRemove = function ( node ) {
callback( node, 'remove' );
},
observer = new MutationObserver( function ( mutationsList ) {
for ( var i in mutationsList ) {
var mutation = mutationsList[ i ];
if ( mutation.type === 'childList' ) {
typeof mutation.addedNodes !== 'undefined' && typeof mutation.addedNodes.forEach === 'function' && mutation.addedNodes.forEach( callbackAdd );
typeof mutation.removedNodes !== 'undefined' && typeof mutation.addedNodes.forEach === 'function' && mutation.removedNodes.forEach( callbackRemove );
}
}
} );
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_quantity();
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 );
var tooltip = $( '<span>', { 'class': 'yith-wcwl-tooltip', 'text': t.data( 'title' ) } );
t.append( tooltip );
var width = tooltip.outerWidth() + 6;
tooltip.outerWidth( width );
tooltip.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]',
scroll: true,
helper: function ( e, ui ) {
ui.children().each( function () {
$( this ).width( $( this ).width() );
} );
return ui;
},
update: function () {
var row = t.find( '[data-row-id]' ),
positions = [],
i = 0;
if ( ! row.length ) {
return;
}
if ( jqxhr ) {
jqxhr.abort();
}
row.each( function () {
var t = $( this );
t.find( 'input[name*="[position]"]' ).val( i++ );
positions.push( t.data( 'row-id' ) );
} );
jqxhr = $.ajax( {
data: {
action: yith_wcwl_l10n.actions.sort_wishlist_items,
nonce: yith_wcwl_l10n.nonce.sort_wishlist_items_nonce,
context: 'frontend',
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' ).attr( 'data-quantity', t.val() );
timeout = setTimeout( function () {
if ( jqxhr ) {
jqxhr.abort();
}
jqxhr = $.ajax( {
beforeSend: function () {
block( table );
},
complete: function () {
unblock( table );
},
data: {
action: yith_wcwl_l10n.actions.update_item_quantity,
nonce: yith_wcwl_l10n.nonce.update_item_quantity_nonce,
context: 'frontend',
product_id: product_id,
wishlist_token: token,
quantity: t.val()
},
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'
} );
$( '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 ) {
if ( ! yith_wcwl_l10n.disable_popup_grid_view ) {
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 ).trigger( 'yith_wcwl_tab_selected', [ tab, target ] );
} );
$( document ).on( 'change', '.wishlist-select', function () {
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:selected' ).prop( 'selected', false );
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 () {
var table = $( '.wishlist_table.responsive' ),
mobile = table.is( '.mobile' ),
media = window.matchMedia( '(max-width: ' + yith_wcwl_l10n.mobile_media_query + 'px)' ),
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.split( ' ' ).join( yith_wcwl_l10n.fragments_index_glue ) ] = options;
jqxhr = $.ajax( {
beforeSend: function () {
block( table );
},
complete: function () {
unblock( table );
},
data: {
action: yith_wcwl_l10n.actions.load_mobile_action,
nonce: yith_wcwl_l10n.nonce.load_mobile_nonce,
context: 'frontend',
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;
data.nonce = yith_wcwl_l10n.nonce.move_to_another_wishlist_nonce;
data.context = 'frontend';
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,
nonce: yith_wcwl_l10n.nonce.remove_from_wishlist_nonce,
context: 'frontend',
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.attr( '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,
nonce: yith_wcwl_l10n.nonce.reload_wishlist_and_adding_elem_nonce,
context: 'frontend',
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() ) {
window.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
shortcode = obj.find( '.yith-wfbt-slider-wrapper' ); // get new form
form.replaceWith( new_form );
$( '.yith-wfbt-slider-wrapper' ).replaceWith( shortcode );
init_handling_after_ajax();
$( document ).trigger( 'yith_wcwl_reload_wishlist_from_frequently' );
}
} );
}
/**
* 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().css( 'display', 'inline-block' ).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;
}
if ( ! wishlist_id ) {
wishlist_id = $( '#wishlist_id' ).val();
}
data = {
action: yith_wcwl_l10n.actions.save_title_action,
nonce: yith_wcwl_l10n.nonce.save_title_nonce,
context: 'frontend',
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, h1, h2' ).text( new_title ).end().show();
} else {
form.addClass( 'woocommerce-invalid' );
title_input.focus();
}
if ( typeof fragments !== 'undefined' ) {
replace_fragments( fragments );
}
init_handling_after_ajax();
}
} );
}
/**
* Submit form to save a new wishlist privacy
*
* @return void
* @since 2.0.7
*/
function save_privacy() {
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,
nonce: yith_wcwl_l10n.nonce.save_privacy_nonce,
context: 'frontend',
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, status ) {
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 heading-icon ' + ('error' === status ? 'fa-exclamation-triangle' : 'fa-check') } ) );
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();
if ( yith_wcwl_l10n.redirect_after_ask_estimate ) {
window.location.replace( yith_wcwl_l10n.ask_estimate_redirect_url );
}
} 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 ) {
if ( v[ 'default' ] ) {
return;
}
$( '<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( {
fragments: null,
s: '',
container: $( document ),
firstLoad: false
}, search );
if ( ! search.fragments ) {
fragments = search.container.find( '.wishlist-fragment' );
} else {
fragments = search.fragments;
}
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' );
}
if ( fragments.length ) {
fragments.each( function () {
var t = $( this ),
id = t.attr( 'class' ).split( ' ' ).filter( ( val ) => {
return val.length && val !== 'exists';
} ).join( yith_wcwl_l10n.fragments_index_glue );
options[ id ] = t.data( 'fragment-options' );
} );
} else {
return null;
}
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 ) {
search = $.extend( {
firstLoad: true
}, search );
var fragments = retrieve_fragments( search );
if ( ! fragments ) {
return;
}
$.ajax( {
data: {
action: yith_wcwl_l10n.actions.load_fragments,
nonce: yith_wcwl_l10n.nonce.load_fragments_nonce,
context: 'frontend',
fragments: fragments
},
method: 'post',
success: function ( data ) {
if ( typeof data.fragments !== 'undefined' ) {
replace_fragments( data.fragments, search );
init_handling_after_ajax();
$( document ).trigger( 'yith_wcwl_fragments_loaded', [ fragments, data.fragments, search.firstLoad ] );
}
},
url: yith_wcwl_l10n.ajax_url
} );
}
/**
* Replace fragments with template received
*
* @param fragments array Array of fragments to replace
* @param data additional data passed to the trigger
* @since 3.0.0
*/
function replace_fragments( fragments, data = {} ) {
$.each( fragments, function ( i, v ) {
var itemSelector = '.' + i.split( yith_wcwl_l10n.fragments_index_glue ).filter( ( val ) => {
return val.length && val !== 'exists' && val !== 'with-count';
} ).join( '.' ),
toReplace = $( itemSelector );
// find replace template
var replaceWith = $( v ).filter( itemSelector );
if ( ! replaceWith.length ) {
replaceWith = $( v ).find( itemSelector );
}
if ( toReplace.length && replaceWith.length ) {
toReplace.replaceWith( replaceWith );
}
} );
$( document.body ).trigger( 'yith_wcwl_fragments_replaced', { fragments, data } );
}
(() => {
var applyBulkButton = $( 'input[name="apply_bulk_actions"]' );
function maybeDisableApplyBulkButton() {
var buttons = $( '.product-checkbox input:checked' );
applyBulkButton.prop( 'disabled', ! buttons.length );
};
$( document ).on( 'change', '.product-checkbox input', maybeDisableApplyBulkButton );
maybeDisableApplyBulkButton();
})();
/**
* Check if device is an IOS device
* @since 2.2.11
*/
function isOS() {
return navigator.userAgent.match( /ipad|iphone/i );
}
/**
* Check if passed value could be considered true
* @since 3.0.14
*/
function isTrue( value ) {
return true === value || 'yes' === value || '1' === value || 1 === value;
}
} );