Merged in feature/280-dev-dev01 (pull request #21)

auto-patch  280-dev-dev01-2024-01-19T16_41_58

* auto-patch  280-dev-dev01-2024-01-19T16_41_58
This commit is contained in:
Tony Volpe
2024-01-19 16:44:43 +00:00
parent 2699b5437a
commit be83910651
2125 changed files with 179300 additions and 35639 deletions

View File

@@ -1,6 +1,5 @@
/* global wc_cart_params */
jQuery( function( $ ) {
jQuery( function ( $ ) {
// wc_cart_params is required to continue, ensure the object exists
if ( typeof wc_cart_params === 'undefined' ) {
return false;
@@ -14,11 +13,10 @@ jQuery( function( $ ) {
* @param {String} endpoint The AJAX Endpoint
* @return {String} The URL to use for the request
*/
var get_url = function( endpoint ) {
return wc_cart_params.wc_ajax_url.toString().replace(
'%%endpoint%%',
endpoint
);
var get_url = function ( endpoint ) {
return wc_cart_params.wc_ajax_url
.toString()
.replace( '%%endpoint%%', endpoint );
};
/**
@@ -27,8 +25,10 @@ jQuery( function( $ ) {
* @param {JQuery Object} $node
* @return {bool} True if the DOM Element is UI Blocked, false if not.
*/
var is_blocked = function( $node ) {
return $node.is( '.processing' ) || $node.parents( '.processing' ).length;
var is_blocked = function ( $node ) {
return (
$node.is( '.processing' ) || $node.parents( '.processing' ).length
);
};
/**
@@ -36,14 +36,14 @@ jQuery( function( $ ) {
*
* @param {JQuery Object} $node
*/
var block = function( $node ) {
var block = function ( $node ) {
if ( ! is_blocked( $node ) ) {
$node.addClass( 'processing' ).block( {
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6
}
opacity: 0.6,
},
} );
}
};
@@ -53,7 +53,7 @@ jQuery( function( $ ) {
*
* @param {JQuery Object} $node
*/
var unblock = function( $node ) {
var unblock = function ( $node ) {
$node.removeClass( 'processing' ).unblock();
};
@@ -62,11 +62,11 @@ jQuery( function( $ ) {
*
* @param {JQuery Object} $notices
*/
var remove_duplicate_notices = function( $notices ) {
var seen = new Set();
var remove_duplicate_notices = function ( $notices ) {
var seen = new Set();
var deduplicated_notices = [];
$notices.each( function() {
$notices.each( function () {
const text = $( this ).text();
if ( ! seen.has( text ) ) {
@@ -84,11 +84,16 @@ jQuery( function( $ ) {
* @param {String} html_str The HTML string with which to replace the div.
* @param {bool} preserve_notices Should notices be kept? False by default.
*/
var update_wc_div = function( html_str, preserve_notices ) {
var $html = $.parseHTML( html_str );
var $new_form = $( '.woocommerce-cart-form', $html );
var update_wc_div = function ( html_str, preserve_notices ) {
var $html = $.parseHTML( html_str );
var $new_form = $( '.woocommerce-cart-form', $html );
var $new_totals = $( '.cart_totals', $html );
var $notices = remove_duplicate_notices( $( '.woocommerce-error, .woocommerce-message, .woocommerce-info', $html ) );
var $notices = remove_duplicate_notices(
$(
'.woocommerce-error, .woocommerce-message, .woocommerce-info, .is-error, .is-info, .is-success',
$html
)
);
// No form, cannot do this.
if ( $( '.woocommerce-cart-form' ).length === 0 ) {
@@ -98,7 +103,9 @@ jQuery( function( $ ) {
// Remove errors
if ( ! preserve_notices ) {
$( '.woocommerce-error, .woocommerce-message, .woocommerce-info' ).remove();
$(
'.woocommerce-error, .woocommerce-message, .woocommerce-info, .is-error, .is-info, .is-success'
).remove();
}
if ( $new_form.length === 0 ) {
@@ -109,8 +116,12 @@ jQuery( function( $ ) {
}
// No items to display now! Replace all cart content.
var $cart_html = $( '.wc-empty-cart-message', $html ).closest( '.woocommerce' );
$( '.woocommerce-cart-form__contents' ).closest( '.woocommerce' ).replaceWith( $cart_html );
var $cart_html = $( '.wc-empty-cart-message', $html ).closest(
'.woocommerce'
);
$( '.woocommerce-cart-form__contents' )
.closest( '.woocommerce' )
.replaceWith( $cart_html );
// Display errors
if ( $notices.length > 0 ) {
@@ -126,7 +137,9 @@ jQuery( function( $ ) {
}
$( '.woocommerce-cart-form' ).replaceWith( $new_form );
$( '.woocommerce-cart-form' ).find( ':input[name="update_cart"]' ).prop( 'disabled', true );
$( '.woocommerce-cart-form' )
.find( ':input[name="update_cart"]' )
.prop( 'disabled', true );
if ( $notices.length > 0 ) {
show_notice( $notices );
@@ -143,7 +156,7 @@ jQuery( function( $ ) {
*
* @param {String} html_str The HTML string with which to replace the div.
*/
var update_cart_totals_div = function( html_str ) {
var update_cart_totals_div = function ( html_str ) {
$( '.cart_totals' ).replaceWith( html_str );
$( document.body ).trigger( 'updated_cart_totals' );
};
@@ -153,29 +166,30 @@ jQuery( function( $ ) {
*
* @param {Object} The Notice HTML Element in string or object form.
*/
var show_notice = function( html_element, $target ) {
var show_notice = function ( html_element, $target ) {
if ( ! $target ) {
$target = $( '.woocommerce-notices-wrapper:first' ) ||
$target =
$( '.woocommerce-notices-wrapper:first' ) ||
$( '.wc-empty-cart-message' ).closest( '.woocommerce' ) ||
$( '.woocommerce-cart-form' );
}
$target.prepend( html_element );
};
/**
* Object to handle AJAX calls for cart shipping changes.
*/
var cart_shipping = {
/**
* Initialize event handlers and UI state.
*/
init: function( cart ) {
this.cart = cart;
this.toggle_shipping = this.toggle_shipping.bind( this );
this.shipping_method_selected = this.shipping_method_selected.bind( this );
this.shipping_calculator_submit = this.shipping_calculator_submit.bind( this );
init: function ( cart ) {
this.cart = cart;
this.toggle_shipping = this.toggle_shipping.bind( this );
this.shipping_method_selected =
this.shipping_method_selected.bind( this );
this.shipping_calculator_submit =
this.shipping_calculator_submit.bind( this );
$( document ).on(
'click',
@@ -199,9 +213,11 @@ jQuery( function( $ ) {
/**
* Toggle Shipping Calculator panel
*/
toggle_shipping: function() {
toggle_shipping: function () {
$( '.shipping-calculator-form' ).slideToggle( 'slow' );
$( 'select.country_to_state, input.country_to_state' ).trigger( 'change' );
$( 'select.country_to_state, input.country_to_state' ).trigger(
'change'
);
$( document.body ).trigger( 'country_to_state_changed' ); // Trigger select2 to load.
return false;
},
@@ -209,11 +225,13 @@ jQuery( function( $ ) {
/**
* Handles when a shipping method is selected.
*/
shipping_method_selected: function() {
shipping_method_selected: function () {
var shipping_methods = {};
// eslint-disable-next-line max-len
$( 'select.shipping_method, :input[name^=shipping_method][type=radio]:checked, :input[name^=shipping_method][type=hidden]' ).each( function() {
$(
'select.shipping_method, :input[name^=shipping_method][type=radio]:checked, :input[name^=shipping_method][type=hidden]'
).each( function () {
shipping_methods[ $( this ).data( 'index' ) ] = $( this ).val();
} );
@@ -221,21 +239,21 @@ jQuery( function( $ ) {
var data = {
security: wc_cart_params.update_shipping_method_nonce,
shipping_method: shipping_methods
shipping_method: shipping_methods,
};
$.ajax( {
type: 'post',
url: get_url( 'update_shipping_method' ),
data: data,
type: 'post',
url: get_url( 'update_shipping_method' ),
data: data,
dataType: 'html',
success: function( response ) {
success: function ( response ) {
update_cart_totals_div( response );
},
complete: function() {
complete: function () {
unblock( $( 'div.cart_totals' ) );
$( document.body ).trigger( 'updated_shipping_method' );
}
},
} );
},
@@ -244,7 +262,7 @@ jQuery( function( $ ) {
*
* @param {Object} evt The JQuery event.
*/
shipping_calculator_submit: function( evt ) {
shipping_calculator_submit: function ( evt ) {
evt.preventDefault();
var $form = $( evt.currentTarget );
@@ -253,26 +271,27 @@ jQuery( function( $ ) {
block( $form );
// Provide the submit button value because wc-form-handler expects it.
$( '<input />' ).attr( 'type', 'hidden' )
.attr( 'name', 'calc_shipping' )
.attr( 'value', 'x' )
.appendTo( $form );
$( '<input />' )
.attr( 'type', 'hidden' )
.attr( 'name', 'calc_shipping' )
.attr( 'value', 'x' )
.appendTo( $form );
// Make call to actual form post URL.
$.ajax( {
type: $form.attr( 'method' ),
url: $form.attr( 'action' ),
data: $form.serialize(),
type: $form.attr( 'method' ),
url: $form.attr( 'action' ),
data: $form.serialize(),
dataType: 'html',
success: function( response ) {
success: function ( response ) {
update_wc_div( response );
},
complete: function() {
complete: function () {
unblock( $form );
unblock( $( 'div.cart_totals' ) );
}
},
} );
}
},
};
/**
@@ -282,64 +301,78 @@ jQuery( function( $ ) {
/**
* Initialize cart UI events.
*/
init: function() {
this.update_cart_totals = this.update_cart_totals.bind( this );
this.input_keypress = this.input_keypress.bind( this );
this.cart_submit = this.cart_submit.bind( this );
this.submit_click = this.submit_click.bind( this );
this.apply_coupon = this.apply_coupon.bind( this );
this.remove_coupon_clicked = this.remove_coupon_clicked.bind( this );
this.quantity_update = this.quantity_update.bind( this );
this.item_remove_clicked = this.item_remove_clicked.bind( this );
this.item_restore_clicked = this.item_restore_clicked.bind( this );
this.update_cart = this.update_cart.bind( this );
init: function () {
this.update_cart_totals = this.update_cart_totals.bind( this );
this.input_keypress = this.input_keypress.bind( this );
this.cart_submit = this.cart_submit.bind( this );
this.submit_click = this.submit_click.bind( this );
this.apply_coupon = this.apply_coupon.bind( this );
this.remove_coupon_clicked =
this.remove_coupon_clicked.bind( this );
this.quantity_update = this.quantity_update.bind( this );
this.item_remove_clicked = this.item_remove_clicked.bind( this );
this.item_restore_clicked = this.item_restore_clicked.bind( this );
this.update_cart = this.update_cart.bind( this );
$( document ).on(
'wc_update_cart added_to_cart',
function() { cart.update_cart.apply( cart, [].slice.call( arguments, 1 ) ); } );
$( document ).on( 'wc_update_cart added_to_cart', function () {
cart.update_cart.apply( cart, [].slice.call( arguments, 1 ) );
} );
$( document ).on(
'click',
'.woocommerce-cart-form :input[type=submit]',
this.submit_click );
this.submit_click
);
$( document ).on(
'keypress',
'.woocommerce-cart-form :input[type=number]',
this.input_keypress );
this.input_keypress
);
$( document ).on(
'submit',
'.woocommerce-cart-form',
this.cart_submit );
this.cart_submit
);
$( document ).on(
'click',
'a.woocommerce-remove-coupon',
this.remove_coupon_clicked );
this.remove_coupon_clicked
);
$( document ).on(
'click',
'.woocommerce-cart-form .product-remove > a',
this.item_remove_clicked );
this.item_remove_clicked
);
$( document ).on(
'click',
'.woocommerce-cart .restore-item',
this.item_restore_clicked );
this.item_restore_clicked
);
$( document ).on(
'change input',
'.woocommerce-cart-form .cart_item :input',
this.input_changed );
this.input_changed
);
$( '.woocommerce-cart-form :input[name="update_cart"]' ).prop( 'disabled', true );
$( '.woocommerce-cart-form :input[name="update_cart"]' ).prop(
'disabled',
true
);
},
/**
* After an input is changed, enable the update cart button.
*/
input_changed: function() {
$( '.woocommerce-cart-form :input[name="update_cart"]' ).prop( 'disabled', false );
input_changed: function () {
$( '.woocommerce-cart-form :input[name="update_cart"]' ).prop(
'disabled',
false
);
},
/**
* Update entire cart via ajax.
*/
update_cart: function( preserve_notices ) {
update_cart: function ( preserve_notices ) {
var $form = $( '.woocommerce-cart-form' );
block( $form );
@@ -347,36 +380,36 @@ jQuery( function( $ ) {
// Make call to actual form post URL.
$.ajax( {
type: $form.attr( 'method' ),
url: $form.attr( 'action' ),
data: $form.serialize(),
type: $form.attr( 'method' ),
url: $form.attr( 'action' ),
data: $form.serialize(),
dataType: 'html',
success: function( response ) {
success: function ( response ) {
update_wc_div( response, preserve_notices );
},
complete: function() {
complete: function () {
unblock( $form );
unblock( $( 'div.cart_totals' ) );
$.scroll_to_notices( $( '[role="alert"]' ) );
}
},
} );
},
/**
* Update the cart after something has changed.
*/
update_cart_totals: function() {
update_cart_totals: function () {
block( $( 'div.cart_totals' ) );
$.ajax( {
url: get_url( 'get_cart_totals' ),
url: get_url( 'get_cart_totals' ),
dataType: 'html',
success: function( response ) {
success: function ( response ) {
update_cart_totals_div( response );
},
complete: function() {
complete: function () {
unblock( $( 'div.cart_totals' ) );
}
},
} );
},
@@ -390,19 +423,18 @@ jQuery( function( $ ) {
* For us, that is the Apply Coupon button. This is required
* to catch the event before that happens.
*/
input_keypress: function( evt ) {
input_keypress: function ( evt ) {
// Catch the enter key and don't let it submit the form.
if ( 13 === evt.keyCode ) {
var $form = $( evt.currentTarget ).parents( 'form' );
try {
// If there are no validation errors, handle the submit.
if ( $form[0].checkValidity() ) {
if ( $form[ 0 ].checkValidity() ) {
evt.preventDefault();
this.cart_submit( evt );
}
} catch( err ) {
} catch ( err ) {
evt.preventDefault();
this.cart_submit( evt );
}
@@ -414,10 +446,10 @@ jQuery( function( $ ) {
*
* @param {Object} evt The JQuery event
*/
cart_submit: function( evt ) {
var $submit = $( document.activeElement ),
cart_submit: function ( evt ) {
var $submit = $( document.activeElement ),
$clicked = $( ':input[type=submit][clicked=true]' ),
$form = $( evt.currentTarget );
$form = $( evt.currentTarget );
// For submit events, currentTarget is form.
// For keypress events, currentTarget is input.
@@ -425,7 +457,9 @@ jQuery( function( $ ) {
$form = $( evt.currentTarget ).parents( 'form' );
}
if ( 0 === $form.find( '.woocommerce-cart-form__contents' ).length ) {
if (
0 === $form.find( '.woocommerce-cart-form__contents' ).length
) {
return;
}
@@ -433,11 +467,16 @@ jQuery( function( $ ) {
return false;
}
if ( $clicked.is( ':input[name="update_cart"]' ) || $submit.is( 'input.qty' ) ) {
if (
$clicked.is( ':input[name="update_cart"]' ) ||
$submit.is( 'input.qty' )
) {
evt.preventDefault();
this.quantity_update( $form );
} else if ( $clicked.is( ':input[name="apply_coupon"]' ) || $submit.is( '#coupon_code' ) ) {
} else if (
$clicked.is( ':input[name="apply_coupon"]' ) ||
$submit.is( '#coupon_code' )
) {
evt.preventDefault();
this.apply_coupon( $form );
}
@@ -448,8 +487,11 @@ jQuery( function( $ ) {
*
* @param {Object} evt The JQuery event
*/
submit_click: function( evt ) {
$( ':input[type=submit]', $( evt.target ).parents( 'form' ) ).removeAttr( 'clicked' );
submit_click: function ( evt ) {
$(
':input[type=submit]',
$( evt.target ).parents( 'form' )
).removeAttr( 'clicked' );
$( evt.target ).attr( 'clicked', 'true' );
},
@@ -458,7 +500,7 @@ jQuery( function( $ ) {
*
* @param {JQuery Object} $form The cart form.
*/
apply_coupon: function( $form ) {
apply_coupon: function ( $form ) {
block( $form );
var cart = this;
@@ -467,24 +509,28 @@ jQuery( function( $ ) {
var data = {
security: wc_cart_params.apply_coupon_nonce,
coupon_code: coupon_code
coupon_code: coupon_code,
};
$.ajax( {
type: 'POST',
url: get_url( 'apply_coupon' ),
data: data,
type: 'POST',
url: get_url( 'apply_coupon' ),
data: data,
dataType: 'html',
success: function( response ) {
$( '.woocommerce-error, .woocommerce-message, .woocommerce-info' ).remove();
success: function ( response ) {
$(
'.woocommerce-error, .woocommerce-message, .woocommerce-info, .is-error, .is-info, .is-success'
).remove();
show_notice( response );
$( document.body ).trigger( 'applied_coupon', [ coupon_code ] );
$( document.body ).trigger( 'applied_coupon', [
coupon_code,
] );
},
complete: function() {
complete: function () {
unblock( $form );
$text_field.val( '' );
cart.update_cart( true );
}
},
} );
},
@@ -493,34 +539,36 @@ jQuery( function( $ ) {
*
* @param {Object} evt The JQuery event
*/
remove_coupon_clicked: function( evt ) {
remove_coupon_clicked: function ( evt ) {
evt.preventDefault();
var cart = this;
var cart = this;
var $wrapper = $( evt.currentTarget ).closest( '.cart_totals' );
var coupon = $( evt.currentTarget ).attr( 'data-coupon' );
var coupon = $( evt.currentTarget ).attr( 'data-coupon' );
block( $wrapper );
var data = {
security: wc_cart_params.remove_coupon_nonce,
coupon: coupon
coupon: coupon,
};
$.ajax( {
type: 'POST',
url: get_url( 'remove_coupon' ),
data: data,
type: 'POST',
url: get_url( 'remove_coupon' ),
data: data,
dataType: 'html',
success: function( response ) {
$( '.woocommerce-error, .woocommerce-message, .woocommerce-info' ).remove();
success: function ( response ) {
$(
'.woocommerce-error, .woocommerce-message, .woocommerce-info, .is-error, .is-info, .is-success'
).remove();
show_notice( response );
$( document.body ).trigger( 'removed_coupon', [ coupon ] );
unblock( $wrapper );
},
complete: function() {
complete: function () {
cart.update_cart( true );
}
},
} );
},
@@ -529,30 +577,31 @@ jQuery( function( $ ) {
*
* @param {JQuery Object} $form The cart form.
*/
quantity_update: function( $form ) {
quantity_update: function ( $form ) {
block( $form );
block( $( 'div.cart_totals' ) );
// Provide the submit button value because wc-form-handler expects it.
$( '<input />' ).attr( 'type', 'hidden' )
.attr( 'name', 'update_cart' )
.attr( 'value', 'Update Cart' )
.appendTo( $form );
$( '<input />' )
.attr( 'type', 'hidden' )
.attr( 'name', 'update_cart' )
.attr( 'value', 'Update Cart' )
.appendTo( $form );
// Make call to actual form post URL.
$.ajax( {
type: $form.attr( 'method' ),
url: $form.attr( 'action' ),
data: $form.serialize(),
type: $form.attr( 'method' ),
url: $form.attr( 'action' ),
data: $form.serialize(),
dataType: 'html',
success: function( response ) {
success: function ( response ) {
update_wc_div( response );
},
complete: function() {
complete: function () {
unblock( $form );
unblock( $( 'div.cart_totals' ) );
$.scroll_to_notices( $( '[role="alert"]' ) );
}
},
} );
},
@@ -561,7 +610,7 @@ jQuery( function( $ ) {
*
* @param {Object} evt The JQuery event
*/
item_remove_clicked: function( evt ) {
item_remove_clicked: function ( evt ) {
evt.preventDefault();
var $a = $( evt.currentTarget );
@@ -571,17 +620,17 @@ jQuery( function( $ ) {
block( $( 'div.cart_totals' ) );
$.ajax( {
type: 'GET',
url: $a.attr( 'href' ),
type: 'GET',
url: $a.attr( 'href' ),
dataType: 'html',
success: function( response ) {
success: function ( response ) {
update_wc_div( response );
},
complete: function() {
complete: function () {
unblock( $form );
unblock( $( 'div.cart_totals' ) );
$.scroll_to_notices( $( '[role="alert"]' ) );
}
},
} );
},
@@ -590,7 +639,7 @@ jQuery( function( $ ) {
*
* @param {Object} evt The JQuery event
*/
item_restore_clicked: function( evt ) {
item_restore_clicked: function ( evt ) {
evt.preventDefault();
var $a = $( evt.currentTarget );
@@ -600,18 +649,18 @@ jQuery( function( $ ) {
block( $( 'div.cart_totals' ) );
$.ajax( {
type: 'GET',
url: $a.attr( 'href' ),
type: 'GET',
url: $a.attr( 'href' ),
dataType: 'html',
success: function( response ) {
success: function ( response ) {
update_wc_div( response );
},
complete: function() {
complete: function () {
unblock( $form );
unblock( $( 'div.cart_totals' ) );
}
},
} );
}
},
};
cart_shipping.init( cart );

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
// Extend checkout block's request data with order attribution data.
window.wp.data.dispatch( window.wc.wcBlocksData.CHECKOUT_STORE_KEY ).__internalSetExtensionData(
'woocommerce/order-attribution',
window.wc_order_attribution.sbjsDataToSchema( window.sbjs.get )
);

View File

@@ -0,0 +1 @@
window.wp.data.dispatch(window.wc.wcBlocksData.CHECKOUT_STORE_KEY).__internalSetExtensionData("woocommerce/order-attribution",window.wc_order_attribution.sbjsDataToSchema(window.sbjs.get));

View File

@@ -0,0 +1,123 @@
( function ( wc_order_attribution ) {
'use strict';
// Cache params reference for shorter reusability.
const params = wc_order_attribution.params;
// Helper functions.
const $ = document.querySelector.bind( document );
/**
* Flattens the sbjs.get object into a schema compatible object.
*
* @param {Object} obj Sourcebuster data object, `sbjs.get`.
* @returns
*/
wc_order_attribution.sbjsDataToSchema = ( obj ) => ( {
type: obj.current.typ,
url: obj.current_add.rf,
utm_campaign: obj.current.cmp,
utm_source: obj.current.src,
utm_medium: obj.current.mdm,
utm_content: obj.current.cnt,
utm_id: obj.current.id,
utm_term: obj.current.trm,
session_entry: obj.current_add.ep,
session_start_time: obj.current_add.fd,
session_pages: obj.session.pgs,
session_count: obj.udata.vst,
user_agent: obj.udata.uag,
} );
/**
* Initialize the module.
*/
function initOrderTracking() {
if ( params.allowTracking === 'no' ) {
removeTrackingCookies();
return;
}
/**
* Initialize sourcebuster.js.
*/
sbjs.init( {
lifetime: Number( params.lifetime ),
session_length: Number( params.session ),
timezone_offset: '0', // utc
} );
/**
* Callback to set visitor source values in the checkout
* and register forms using sourcebuster object values.
* More info at https://sbjs.rocks/#/usage.
*/
const setFields = () => {
if ( sbjs.get ) {
for( const [ key, value ] of Object.entries( wc_order_attribution.sbjsDataToSchema( sbjs.get ) ) ) {
$( `input[name="${params.prefix}${key}"]` ).value = value;
}
}
};
/**
* Add source values to the classic checkout form.
*/
if ( $( 'form.woocommerce-checkout' ) !== null ) {
const previousInitCheckout = document.body.oninit_checkout;
document.body.oninit_checkout = () => {
setFields();
previousInitCheckout && previousInitCheckout();
};
}
/**
* Add source values to register form.
*/
if ( $( '.woocommerce form.register' ) !== null ) {
setFields();
}
}
/**
* Enable or disable order tracking analytics and marketing consent init and change.
*/
wc_order_attribution.setAllowTrackingConsent = ( allow ) => {
if ( ! allow ) {
return;
}
params.allowTracking = 'yes';
initOrderTracking();
}
/**
* Remove sourcebuster.js cookies.
* To be called whenever tracking is disabled or consent is revoked.
*/
function removeTrackingCookies() {
const domain = window.location.hostname;
const sbCookies = [
'sbjs_current',
'sbjs_current_add',
'sbjs_first',
'sbjs_first_add',
'sbjs_session',
'sbjs_udata',
'sbjs_migrations',
'sbjs_promo'
];
// Remove cookies
sbCookies.forEach( ( name ) => {
document.cookie = `${name}=; path=/; max-age=-999; domain=.${domain};`;
} );
}
// Run init.
initOrderTracking();
}( window.wc_order_attribution ) );

View File

@@ -0,0 +1 @@
!function(t){"use strict";const e=t.params,s=document.querySelector.bind(document);function n(){if("no"===e.allowTracking)return void function(){const t=window.location.hostname;["sbjs_current","sbjs_current_add","sbjs_first","sbjs_first_add","sbjs_session","sbjs_udata","sbjs_migrations","sbjs_promo"].forEach(e=>{document.cookie=`${e}=; path=/; max-age=-999; domain=.${t};`})}();sbjs.init({lifetime:Number(e.lifetime),session_length:Number(e.session),timezone_offset:"0"});const n=()=>{if(sbjs.get)for(const[n,o]of Object.entries(t.sbjsDataToSchema(sbjs.get)))s(`input[name="${e.prefix}${n}"]`).value=o};if(null!==s("form.woocommerce-checkout")){const t=document.body.oninit_checkout;document.body.oninit_checkout=(()=>{n(),t&&t()})}null!==s(".woocommerce form.register")&&n()}t.sbjsDataToSchema=(t=>({type:t.current.typ,url:t.current_add.rf,utm_campaign:t.current.cmp,utm_source:t.current.src,utm_medium:t.current.mdm,utm_content:t.current.cnt,utm_id:t.current.id,utm_term:t.current.trm,session_entry:t.current_add.ep,session_start_time:t.current_add.fd,session_pages:t.session.pgs,session_count:t.udata.vst,user_agent:t.udata.uag})),t.setAllowTrackingConsent=(t=>{t&&(e.allowTracking="yes",n())}),n()}(window.wc_order_attribution);

View File

@@ -1,5 +1,5 @@
/* global wp, pwsL10n, wc_password_strength_meter_params */
( function( $ ) {
jQuery( function( $ ) {
'use strict';
/**
* Password Strength Meter class.
@@ -129,4 +129,4 @@
};
wc_password_strength_meter.init();
})( jQuery );
} );

View File

@@ -1 +1 @@
!function(s){"use strict";var r={init:function(){s(document.body).on("keyup change","form.register #reg_password, form.checkout #account_password, form.edit-account #password_1, form.lost_reset_password #password_1",this.strengthMeter),s("form.checkout #createaccount").trigger("change")},strengthMeter:function(){var e,t=s("form.register, form.checkout, form.edit-account, form.lost_reset_password"),o=s('button[type="submit"]',t),a=s("#reg_password, #account_password, #password_1",t),d=a.val(),n=!t.is("form.checkout");r.includeMeter(t,a),e=r.checkPasswordStrength(t,a),wc_password_strength_meter_params.stop_checkout&&(n=!0),d.length>0&&e<wc_password_strength_meter_params.min_password_strength&&-1!==e&&n?o.attr("disabled","disabled").addClass("disabled"):o.prop("disabled",!1).removeClass("disabled")},includeMeter:function(r,e){var t=r.find(".woocommerce-password-strength");""===e.val()?(t.hide(),s(document.body).trigger("wc-password-strength-hide")):0===t.length?(e.after('<div class="woocommerce-password-strength" aria-live="polite"></div>'),s(document.body).trigger("wc-password-strength-added")):(t.show(),s(document.body).trigger("wc-password-strength-show"))},checkPasswordStrength:function(s,r){var e=s.find(".woocommerce-password-strength"),t=s.find(".woocommerce-password-hint"),o='<small class="woocommerce-password-hint">'+wc_password_strength_meter_params.i18n_password_hint+"</small>",a=wp.passwordStrength.meter(r.val(),wp.passwordStrength.userInputDisallowedList()),d="";if(e.removeClass("short bad good strong"),t.remove(),e.is(":hidden"))return a;switch(a<wc_password_strength_meter_params.min_password_strength&&(d=" - "+wc_password_strength_meter_params.i18n_password_error),a){case 0:e.addClass("short").html(pwsL10n.short+d),e.after(o);break;case 1:case 2:e.addClass("bad").html(pwsL10n.bad+d),e.after(o);break;case 3:e.addClass("good").html(pwsL10n.good+d);break;case 4:e.addClass("strong").html(pwsL10n.strong+d);break;case 5:e.addClass("short").html(pwsL10n.mismatch)}return a}};r.init()}(jQuery);
jQuery(function(s){"use strict";var r={init:function(){s(document.body).on("keyup change","form.register #reg_password, form.checkout #account_password, form.edit-account #password_1, form.lost_reset_password #password_1",this.strengthMeter),s("form.checkout #createaccount").trigger("change")},strengthMeter:function(){var e,t=s("form.register, form.checkout, form.edit-account, form.lost_reset_password"),o=s('button[type="submit"]',t),a=s("#reg_password, #account_password, #password_1",t),d=a.val(),n=!t.is("form.checkout");r.includeMeter(t,a),e=r.checkPasswordStrength(t,a),wc_password_strength_meter_params.stop_checkout&&(n=!0),d.length>0&&e<wc_password_strength_meter_params.min_password_strength&&-1!==e&&n?o.attr("disabled","disabled").addClass("disabled"):o.prop("disabled",!1).removeClass("disabled")},includeMeter:function(r,e){var t=r.find(".woocommerce-password-strength");""===e.val()?(t.hide(),s(document.body).trigger("wc-password-strength-hide")):0===t.length?(e.after('<div class="woocommerce-password-strength" aria-live="polite"></div>'),s(document.body).trigger("wc-password-strength-added")):(t.show(),s(document.body).trigger("wc-password-strength-show"))},checkPasswordStrength:function(s,r){var e=s.find(".woocommerce-password-strength"),t=s.find(".woocommerce-password-hint"),o='<small class="woocommerce-password-hint">'+wc_password_strength_meter_params.i18n_password_hint+"</small>",a=wp.passwordStrength.meter(r.val(),wp.passwordStrength.userInputDisallowedList()),d="";if(e.removeClass("short bad good strong"),t.remove(),e.is(":hidden"))return a;switch(a<wc_password_strength_meter_params.min_password_strength&&(d=" - "+wc_password_strength_meter_params.i18n_password_error),a){case 0:e.addClass("short").html(pwsL10n.short+d),e.after(o);break;case 1:case 2:e.addClass("bad").html(pwsL10n.bad+d),e.after(o);break;case 3:e.addClass("good").html(pwsL10n.good+d);break;case 4:e.addClass("strong").html(pwsL10n.strong+d);break;case 5:e.addClass("short").html(pwsL10n.mismatch)}return a}};r.init()});

View File

@@ -0,0 +1,24 @@
( function ( $ ) {
'use strict';
// Check init order attribution on consent change.
const CONSENT_CATEGORY_MARKING = 'marketing';
document.addEventListener( 'wp_listen_for_consent_change', ( e ) => {
const changedConsentCategory = e.detail;
for ( const key in changedConsentCategory ) {
if ( changedConsentCategory.hasOwnProperty( key ) ) {
if ( key === CONSENT_CATEGORY_MARKING && changedConsentCategory[ key ] === 'allow' ) {
window.wc_order_attribution.setAllowTrackingConsent( true );
}
}
}
} );
// Init order attribution as soon as consent type is defined.
$( document ).on( 'wp_consent_type_defined', () => {
if ( wp_has_consent( CONSENT_CATEGORY_MARKING ) ) {
window.wc_order_attribution.setAllowTrackingConsent( true );
}
} );
}( jQuery ) );

View File

@@ -0,0 +1 @@
!function(n){"use strict";document.addEventListener("wp_listen_for_consent_change",n=>{const t=n.detail;for(const n in t)t.hasOwnProperty(n)&&"marketing"===n&&"allow"===t[n]&&window.wc_order_attribution.setAllowTrackingConsent(!0)}),n(document).on("wp_consent_type_defined",()=>{wp_has_consent("marketing")&&window.wc_order_attribution.setAllowTrackingConsent(!0)})}(jQuery);