93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
/*global storefront_sticky_add_to_cart_params */
|
|
( function () {
|
|
// eslint-disable-next-line @wordpress/no-global-event-listener
|
|
document.addEventListener( 'DOMContentLoaded', function () {
|
|
const stickyAddToCart = document.getElementsByClassName(
|
|
'storefront-sticky-add-to-cart'
|
|
);
|
|
|
|
if ( ! stickyAddToCart.length ) {
|
|
return;
|
|
}
|
|
|
|
// eslint-disable-next-line camelcase
|
|
if ( typeof storefront_sticky_add_to_cart_params === 'undefined' ) {
|
|
return;
|
|
}
|
|
|
|
const trigger = document.getElementsByClassName(
|
|
storefront_sticky_add_to_cart_params.trigger_class
|
|
);
|
|
|
|
if ( trigger.length > 0 ) {
|
|
const stickyAddToCartToggle = function () {
|
|
if (
|
|
trigger[ 0 ].getBoundingClientRect().top +
|
|
trigger[ 0 ].scrollHeight <
|
|
0
|
|
) {
|
|
stickyAddToCart[ 0 ].classList.add(
|
|
'storefront-sticky-add-to-cart--slideInDown'
|
|
);
|
|
stickyAddToCart[ 0 ].classList.remove(
|
|
'storefront-sticky-add-to-cart--slideOutUp'
|
|
);
|
|
} else if (
|
|
stickyAddToCart[ 0 ].classList.contains(
|
|
'storefront-sticky-add-to-cart--slideInDown'
|
|
)
|
|
) {
|
|
stickyAddToCart[ 0 ].classList.add(
|
|
'storefront-sticky-add-to-cart--slideOutUp'
|
|
);
|
|
stickyAddToCart[ 0 ].classList.remove(
|
|
'storefront-sticky-add-to-cart--slideInDown'
|
|
);
|
|
}
|
|
};
|
|
|
|
stickyAddToCartToggle();
|
|
|
|
// eslint-disable-next-line @wordpress/no-global-event-listener
|
|
window.addEventListener( 'scroll', function () {
|
|
stickyAddToCartToggle();
|
|
} );
|
|
|
|
// Get product id
|
|
let productId = null;
|
|
|
|
document.body.classList.forEach( function ( item ) {
|
|
if ( item.substring( 0, 7 ) === 'postid-' ) {
|
|
productId = item.replace( /[^0-9]/g, '' );
|
|
}
|
|
} );
|
|
|
|
if ( productId ) {
|
|
const product = document.getElementById(
|
|
'product-' + productId
|
|
);
|
|
|
|
if ( product ) {
|
|
if (
|
|
! product.classList.contains( 'product-type-simple' ) &&
|
|
! product.classList.contains( 'product-type-external' )
|
|
) {
|
|
const selectOptions = document.getElementsByClassName(
|
|
'storefront-sticky-add-to-cart__content-button'
|
|
);
|
|
|
|
selectOptions[ 0 ].addEventListener( 'click', function (
|
|
event
|
|
) {
|
|
event.preventDefault();
|
|
document
|
|
.getElementById( 'product-' + productId )
|
|
.scrollIntoView();
|
|
} );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} );
|
|
} )();
|