window.wirewax.shopifySelectors = {
addToCart: "[data-add-to-cart]",
addToCartText: "[data-add-to-cart-text]",
cartCount: "[data-cart-count]",
cartCountBubble: "[data-cart-count-bubble]",
cartPopup: "[data-cart-popup]",
cartPopupCartQuantity: "[data-cart-popup-cart-quantity]",
cartPopupClose: "[data-cart-popup-close]",
cartPopupDismiss: "[data-cart-popup-dismiss]",
cartPopupImage: "[data-cart-popup-image]",
cartPopupImageWrapper: "[data-cart-popup-image-wrapper]",
cartPopupImagePlaceholder: "[data-image-loading-animation]",
cartPopupProductDetails: "[data-cart-popup-product-details]",
cartPopupQuantity: "[data-cart-popup-quantity]",
cartPopupQuantityLabel: "[data-cart-popup-quantity-label]",
cartPopupTitle: "[data-cart-popup-title]",
cartPopupWrapper: "[data-cart-popup-wrapper]",
loader: "[data-loader]",
loaderStatus: "[data-loader-status]",
quantity: "[data-quantity-input]",
SKU: ".variant-sku",
productStatus: "[data-product-status]",
productForm: "[data-product-form]",
errorMessage: "[data-error-message]",
errorMessageWrapper: "[data-error-message-wrapper]",
imageZoomWrapper: "[data-image-zoom-wrapper]",
productMediaWrapper: "[data-product-single-media-wrapper]",
productThumbListItem: ".product-single__thumbnails-item",
productThumbsWrapper: ".thumbnails-wrapper",
shopifyPaymentButton: ".shopify-payment-button",
productMediaTypeVideo: "[data-product-media-type-video]",
productMediaTypeModel: "[data-product-media-type-model]",
priceContainer: "[data-price]",
regularPrice: "[data-regular-price]",
salePrice: "[data-sale-price]",
unitPrice: "[data-unit-price]",
unitPriceBaseUnit: "[data-unit-price-base-unit]",
productPolicies: "[data-product-policies]",
storeAvailabilityContainer: "[data-store-availability-container]"
};
window.wirewax.shopifyClasses = {
cartPopupWrapperHidden: "cart-popup-wrapper--hidden",
hidden: "hide",
visibilityHidden: "visibility-hidden",
inputError: "input--error",
jsZoomEnabled: "js-zoom-enabled",
productOnSale: "price--on-sale",
productUnitAvailable: "price--unit-available",
productUnavailable: "price--unavailable",
productSoldOut: "price--sold-out",
cartImage: "cart-popup-item__image",
productFormErrorMessageWrapperHidden: "product-form__error-message-wrapper--hidden",
activeClass: "active-thumb",
variantSoldOut: "product-form--variant-sold-out"
};
window.wirewax.setupShopifyCartPopup = function(item) {
window.wirewax.cartPopup = document.querySelector(
window.wirewax.shopifySelectors.cartPopup
);
window.wirewax.cartPopupWrapper = document.querySelector(
window.wirewax.shopifySelectors.cartPopupWrapper
);
window.wirewax.cartPopupTitle = document.querySelector(
window.wirewax.shopifySelectors.cartPopupTitle
);
window.wirewax.cartPopupQuantity = document.querySelector(
window.wirewax.shopifySelectors.cartPopupQuantity
);
window.wirewax.cartPopupQuantityLabel = document.querySelector(
window.wirewax.shopifySelectors.cartPopupQuantityLabel
);
window.wirewax.cartPopupClose = document.querySelector(
window.wirewax.shopifySelectors.cartPopupClose
);
window.wirewax.cartPopupDismiss = document.querySelector(
window.wirewax.shopifySelectors.cartPopupDismiss
);
window.wirewax.cartPopupImagePlaceholder = document.querySelector(
window.wirewax.shopifySelectors.cartPopupImagePlaceholder
);
window.wirewax.setupCartPopupEventListeners();
window.wirewax.updateCartInfo(item);
};
window.wirewax.setupCartPopupEventListeners = function() {
window.wirewax.shopifyHideCart = function() {
window.theme.Helpers.prepareTransition(
window.wirewax.cartPopupWrapper
);
window.wirewax.cartPopupWrapper.classList.add(
window.wirewax.shopifyClasses.cartPopupWrapperHidden
);
var cartPopupImage = document.querySelector(
window.wirewax.shopifySelectors.cartPopupImage
);
if (cartPopupImage) {
cartPopupImage.remove();
}
window.wirewax.cartPopupImagePlaceholder.setAttribute(
"data-image-loading-animation",
""
);
};
window.wirewax.cartPopupClose.addEventListener(
"click",
window.wirewax.shopifyHideCart
);
window.wirewax.cartPopupDismiss.addEventListener(
"click",
window.wirewax.shopifyHideCart
);
};
window.wirewax.updateCartInfo = function(item) {
var quantity = 1;
var selling_plan_name = item.selling_plan_allocation ?
item.selling_plan_allocation.selling_plan.name :
null;
window.wirewax.cartPopupTitle.textContent = item.product_title;
window.wirewax.cartPopupQuantity.textContent = quantity;
window.wirewax.cartPopupQuantityLabel.textContent = window.theme.strings.quantityLabel.replace(
"[count]",
quantity
);
window.wirewax._setCartPopupPlaceholder(item.featured_image.url);
window.wirewax._setCartPopupImage(
item.featured_image.url,
item.featured_image.alt
);
fetch("/cart.js", {
credentials: "same-origin"
})
.then(function(response) {
return response.json();
})
.then(function(cart) {
window.wirewax._setCartQuantity(cart.item_count);
window.wirewax.updateShopifyCountBubble(cart.item_count);
window.wirewax.showShopifyCart();
})
.catch(function(error) {
console.log(error);
});
};
window.wirewax._setCartQuantity = function(quantity) {
window.wirewax.cartPopupCartQuantity =
window.wirewax.cartPopupCartQuantity ||
document.querySelector(window.wirewax.shopifySelectors.cartPopupCartQuantity);
var ariaLabel;
if (quantity === 1) {
ariaLabel = window.theme.strings.oneCartCount;
} else if (quantity > 1) {
ariaLabel = window.theme.strings.otherCartCount.replace("[count]", quantity);
}
window.wirewax.cartPopupCartQuantity.textContent = quantity;
window.wirewax.cartPopupCartQuantity.setAttribute("aria-label", ariaLabel);
};
window.wirewax._setCartPopupPlaceholder = function(imageUrl) {
window.wirewax.cartPopupImageWrapper =
window.wirewax.cartPopupImageWrapper ||
document.querySelector(
window.wirewax.shopifySelectors.cartPopupImageWrapper
);
if (imageUrl === null) {
window.wirewax.cartPopupImageWrapper.classList.add(
window.wirewax.shopifyClasses.hidden
);
return;
}
};
window.wirewax._setCartPopupImage = function(imageUrl, imageAlt) {
if (imageUrl === null) return;
window.wirewax.cartPopupImageWrapper.classList.remove(
window.wirewax.shopifyClasses.hidden
);
var sizedImageUrl = window.theme.Images.getSizedImageUrl(
imageUrl,
"200x"
);
var image = document.createElement("img");
image.src = sizedImageUrl;
image.alt = imageAlt;
image.classList.add(window.wirewax.shopifyClasses.cartImage);
image.setAttribute("data-cart-popup-image", "");
image.onload = function() {
window.wirewax.cartPopupImagePlaceholder.removeAttribute(
"data-image-loading-animation"
);
window.wirewax.cartPopupImageWrapper.append(image);
}.bind(this);
};
window.wirewax._setCartPopupProductDetails = function(
product_has_only_default_variant,
options,
properties,
selling_plan_name
) {
window.wirewax.cartPopupProductDetails = document.querySelector(
window.wirewax.shopifySelectors.cartPopupProductDetails
);
var variantPropertiesHTML = "";
if (!product_has_only_default_variant) {
variantPropertiesHTML =
variantPropertiesHTML + this._getVariantOptionList(options);
}
if (selling_plan_name) {
variantPropertiesHTML =
variantPropertiesHTML + this._getSellingPlanHTML(selling_plan_name);
}
if (properties !== null && Object.keys(properties).length !== 0) {
variantPropertiesHTML =
variantPropertiesHTML + this._getPropertyList(properties);
}
if (variantPropertiesHTML.length === 0) {
this.cartPopupProductDetails.innerHTML = "";
this.cartPopupProductDetails.setAttribute("hidden", "");
} else {
this.cartPopupProductDetails.innerHTML = variantPropertiesHTML;
this.cartPopupProductDetails.removeAttribute("hidden");
}
};
window.wirewax.updateShopifyCountBubble = function(quantity) {
const cartCountBubble = document.querySelector(
window.wirewax.shopifySelectors.cartCountBubble
);
const cartCount = document.querySelector(
window.wirewax.shopifySelectors.cartCount
);
cartCountBubble.classList.remove(window.wirewax.shopifyClasses.hidden);
cartCount.textContent = quantity;
};
window.wirewax.showShopifyCart = function() {
window.theme.Helpers.prepareTransition(window.wirewax.cartPopupWrapper);
window.wirewax.cartPopupWrapper.classList.remove(
window.wirewax.shopifyClasses.cartPopupWrapperHidden
);
};