Untitled
unknown
plain_text
3 years ago
18 kB
6
Indexable
(function() {
try {
/* main variables */
var debug = 0;
var variation_name = "";
var $;
/* all Pure helper functions */
function waitForElement(selector, trigger, delayInterval, delayTimeout) {
var interval = setInterval(function() {
if (
document &&
document.querySelector(selector) &&
document.querySelectorAll(selector).length > 0
) {
clearInterval(interval);
trigger();
}
}, delayInterval);
setTimeout(function() {
clearInterval(interval);
}, delayTimeout);
}
// wait for jquery
function waitForjQuery(trigger) {
var interval = setInterval(function() {
if (window.jQuery != undefined) {
clearInterval(interval);
trigger();
} else {
addJQuery();
}
}, 50);
setTimeout(function() {
clearInterval(interval);
}, 15000)
}
function addJQuery() {
var jQueryScript = document.createElement('script');
// check for updated jquery cdn
jQueryScript.src = 'https://code.jquery.com/jquery-3.6.3.min.js';
document.getElementsByTagName('head')[0].appendChild(jQueryScript);
}
// wait for jquery
function waitForSlick(trigger) {
var interval = setInterval(function() {
if (window.jQuery.fn.slick != undefined) {
clearInterval(interval);
trigger();
}
}, 50);
setTimeout(function() {
clearInterval(interval);
}, 15000)
}
// slick script and css cdn
function addScript() {
var cssScript = '' +
"<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.css'/>";
let themeCssScript = `<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick-theme.css'/>`;
document.querySelector('head').insertAdjacentHTML('beforeend', cssScript);
document.querySelector('head').insertAdjacentHTML('beforeend', themeCssScript);
var swiperScript = document.createElement('script');
swiperScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js';
document.getElementsByTagName('head')[0].appendChild(swiperScript);
}
function live(selector, event, callback, context) {
/****Helper Functions****/
// helper for enabling IE 8 event bindings
function addEvent(el, type, handler) {
if (el.attachEvent) el.attachEvent("on" + type, handler);
else el.addEventListener(type, handler);
}
// matches polyfill
this.Element &&
(function(ElementPrototype) {
ElementPrototype.matches =
ElementPrototype.matches ||
ElementPrototype.matchesSelector ||
ElementPrototype.webkitMatchesSelector ||
ElementPrototype.msMatchesSelector ||
function(selector) {
var node = this,
nodes = (node.parentNode || node.document).querySelectorAll(selector),
i = -1;
while (nodes[++i] && nodes[i] != node);
return !!nodes[i];
};
})(Element.prototype);
// live binding helper using matchesSelector
function live(selector, event, callback, context) {
addEvent(context || document, event, function(e) {
var found,
el = e.target || e.srcElement;
while (el && el.matches && el !== context && !(found = el.matches(selector))) el = el.parentElement;
if (found) callback.call(el, e);
});
}
live(selector, event, callback, context);
}
live('.eg-bag-container fieldset.pdp-fieldset>.options>a', 'click', (e) => {
e.preventDefault();
if (e.target.classList.contains("sold-out")) {
document.querySelector(".eg-bag-container.eg-show").classList.remove("eg-show");
} else {
let variantId = e.target.getAttribute("data-variant-id");
Shopify.addItem(variantId, '1', function() {
console.log("hello" + variantId);
setTimeout(() => {
sideCartValue();
// opening cart slide
document.querySelector("html body .cart__container > a").click();
document.querySelector(".eg-bag-container.eg-show").classList.remove("eg-show");
}, 2000);
});
}
});
function sideCartValue() {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var parser = new DOMParser();
var response = parser.parseFromString(xmlHttp.responseText, 'text/html');
var cartproduces = response.querySelector(".inline-cart__content-container").innerHTML;
var Itemsqnty = response.querySelector(".inline-cart__header").innerHTML;
var ItemSubTotal = response.querySelector(".inline-cart__total-amount-container").innerHTML;
var MainNavQty = response.querySelector(".inline-cart__header .inline-cart__total-count").innerText;
document.querySelector(".inline-cart__content-container").innerHTML = cartproduces;
document.querySelector(".inline-cart__header").innerHTML = Itemsqnty;
document.querySelector(".inline-cart__total-amount-container").innerHTML = ItemSubTotal;
document.querySelector(".cart__container > a > span > span").innerText = MainNavQty;
setTimeout(function() {
if (document.querySelector(" .inline-cart .inline-cart__btn").classList.contains("is-disabled")) {
document.querySelector(".inline-cart .inline-cart__btn").classList.remove("is-disabled")
}
}, 500)
}
}
};
xmlHttp.open("GET", "https://www.wickedclothes.com/cart?view=contents", true);
xmlHttp.send(null);
}
live(".eg-add-to-bag", "click", function() {
if (document.querySelector(".eg-bag-container.eg-show") && document.querySelector(".eg-bag-container.eg-show") !== this.previousElementSibling) {
document.querySelector(".eg-bag-container.eg-show").classList.remove("eg-show");
}
this.previousElementSibling.classList.toggle("eg-show");
if (!document.querySelector(".eg-bag-container fieldset.pdp-fieldset>.options>a")) {
let variantId = this.previousElementSibling.querySelector("#pdp--form > input[name=id]").value;
Shopify.addItem(variantId, '1', function() {
console.log("hello" + variantId);
setTimeout(() => {
sideCartValue();
// opening cart slide
document.querySelector("html body .cart__container > a").click();
document.querySelector(".eg-bag-container.eg-show").classList.remove("eg-show");
}, 2000);
});
}
});
/* Variation Init */
function init() {
/* start your code here */
addData();
listener();
waitForjQuery(function() {
addScript();
$ = window.jQuery;
});
}
// navigate to pdp page when image gets click
live(".eg-swipe-img", "click", function() {
window.location.href = this.getAttribute("href");
});
function addData() {
document.querySelectorAll("html body .newCollection >div:not(.newCollection__head) > .findify-container .findify-components--cards--product:not(:has(+.eg-swipe-wrapper))").forEach(anchor => {
// getting data
async function getData(url) {
try {
const response = await fetch(url);
const data = await response.text();
const ele = document.createElement("div");
ele.innerHTML = data;
let imgsHtml = [...ele.querySelectorAll("#pdp--main-image .pdp-main-image--product-imgs > img")].map(img => {
return `<img href="${anchor.href}" class="eg-swipe-img" src="${img.dataset.srcset}"/>`;
}).join(" ");
let egComparePrice = anchor.querySelector(".findify-components--cards--product--price__compare");
let egOriginalPrice = anchor.querySelector(".findify-components--cards--product--price__price");
let egSwipeHtml = `
<div class="eg-swipe-wrapper">
<!-- swipper -->
<div class="eg-swipe">
<div>${imgsHtml}</div>
<!-- add to bag form -->
<div class="eg-bag-container">
${ele.querySelector("#pdp--form-container").innerHTML}
</div>
<button class="eg-add-to-bag">+ Quick Add</button>
</div>
<!-- product details -->
<div class="eg-product-detail">
<p class="eg-name">${anchor.querySelector(".findify-components--cards--product__title").innerText}</p>
<div class="eg-price-container">
<span class="eg-current-price eg-price">${egOriginalPrice.innerText}</span>`;
if(egComparePrice){
egSwipeHtml += `<span class="eg-original-price">${egComparePrice.innerText}</span></div>`;
}
egSwipeHtml += `
</div>
</div>
</div>`;
if (!anchor.parentElement.querySelector(".eg-swipe")) {
anchor.insertAdjacentHTML("afterend", egSwipeHtml);
waitForSlick(function() {
$(anchor.parentElement.querySelector(".eg-swipe > div")).slick({
dots:true,
arrows: false,
infinite: true,
speed: 300,
slidesToShow: 1,
init: function(slider) {
slider.$slider.css('transform', 'initial');
},
lazyLoad: 'ondemand',
draggable:true
});
});
}
} catch (error) {
console.error(error);
}
}
getData(anchor.href);
});
}
function listener() {
/* These are the modifications: */
window.addEventListener("locationchange", function() {
setTimeout(() => {
addData();
}, 100);
});
history.pushState = ((f) =>
function pushState() {
var ret = f.apply(this, arguments);
window.dispatchEvent(new Event("pushstate"));
window.dispatchEvent(new Event("locationchange"));
return ret;
})(history.pushState);
history.replaceState = ((f) =>
function replaceState() {
var ret = f.apply(this, arguments);
window.dispatchEvent(new Event("replacestate"));
window.dispatchEvent(new Event("locationchange"));
return ret;
})(history.replaceState);
window.addEventListener("popstate", () => {
window.dispatchEvent(new Event("locationchange"));
});
}
/* Initialize variation */
if (window.innerWidth < 768) {
waitForElement('html body .newCollection >div:not(.newCollection__head) > .findify-container .findify-components--cards--product:not(:has(+.eg-swipe-wrapper))', init, 150, 15000);
}
} catch (e) {
if (debug) console.log(e, "error in Test" + variation_name);
}
})();
<style>
@media(max-width:767px) {
html body .newCollection>div:not(.newCollection__head)>.findify-container .findify-components--cards--product:has(+ .eg-swipe-wrapper) {
display: none;
}
html body .eg-swipe .slick-dots {
top: unset !important;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
padding: 8px 0;
}
html body .eg-swipe .slick-dots button {
margin: 0 !important;
scale: 0.8;
transition: scale 0.5s;
background: rgb(255 255 255 /70%) !important;
border: none !important;
outline: none !important;
}
html body .eg-swipe .slick-dots li {
margin: 2px !important;
}
html body .eg-swipe .slick-dots li.slick-active button {
scale: 1.2;
}
.eg-swipe img {
display: block !important;
}
/*default cta*/
.eg-quick-atc-cta {
display: none !important;
}
.eg-swipe-wrapper {
width: calc(100% - 18px);
margin: 0 auto;
isolation: isolate;
}
.eg-swipe {
margin-bottom: 54px;
position: relative;
}
.eg-bag-container,
.eg-add-to-bag {
position: absolute;
width: 100%;
}
.eg-bag-container {
height: fit-content;
display: none;
flex-direction: column;
justify-content: flex-end;
bottom: 0;
z-index: 9999;
}
.eg-bag-container.eg-show {
display: flex;
}
.eg-add-to-bag {
display: block;
border: none;
outline: none !important;
width: 100%;
color: #fff;
font-weight: 500;
background: #1f1c1c !important;
font-family: "FuturaPT", sans-serif !important;
text-transform: uppercase;
letter-spacing: 0.8px;
padding: 10px;
font-size: 17px;
margin: 0 !important;
bottom: -41px;
}
/*add to cart form css*/
.eg-bag-container .options svg,
.eg-bag-container .options-size,
.eg-bag-container .pdp--form__cta-container,
.eg-bag-container .pdp-fieldset-header-wrap {
display: none !important;
}
.eg-bag-container fieldset.pdp-fieldset {
border: none !important;
}
.eg-bag-container fieldset.pdp-fieldset>.options {
display: flex;
background: rgb(255 255 255 /85%);
flex-wrap: wrap;
justify-content: center;
align-items: center;
padding: 38px 0 10px;
position: relative;
color: #1f1f1c;
}
.eg-bag-container fieldset.pdp-fieldset>.options::before {
content: "Select a size";
font-size: 22px;
position: absolute;
top: 5px;
}
.eg-bag-container fieldset.pdp-fieldset>.options>a {
font-size: 16px;
color: #1f1f1c;
display: flex;
width: 32px;
height: 32px;
justify-content: center;
align-items: center;
background: white;
border: 1px solid;
margin: 5px;
}
.eg-bag-container fieldset.pdp-fieldset>.options>a:hover {
border-color: #1f1f1c;
background-color: #1f1f1c;
color: #fff;
}
.eg-product-detail .eg-name,
.eg-product-detail .eg-price {
-webkit-font-smoothing: antialiased;
color: #1f1c1c;
display: block;
text-align: center;
font-family: "FuturaPT", sans-serif !important;
text-rendering: optimizeLegibility;
}
.eg-product-detail {
padding: 0 10px 20px;
}
.eg-product-detail .eg-name {
font-size: 16px !important;
margin-bottom: 10px;
}
.eg-product-detail .eg-price {
font-size: 14px;
font-weight: 700;
}
.eg-swipe .slick-track {
width: 100% !important;
height: 100% !important;
display: flex;
}
.eg-swipe .slick-track>img {
width: 100% !important;
height: 100% !important;
}
html body .eg-price-container {
display: flex;
justify-content: center;
}
html body .eg-price-container:has(.eg-original-price) .eg-price {
margin-right: 5px;
color: #d0284b;
}
html body .eg-price-container .eg-original-price {
font-style: italic;
text-decoration: line-through;
color: #8d8d8d;
}
html body .st-swipe-wrapper{
display:none !important;
}
html body .findify-container .findify-components-common--grid span + a {
display: none !important;
}
html body .eg-bag-container a.sold-out {
color: #aaa !important;
}
}
</style>Editor is loading...