www.abyssoo.shop
Open in
urlscan Pro
104.18.232.42
Public Scan
Submitted URL: https://abyssoo.shop/
Effective URL: https://www.abyssoo.shop/
Submission: On May 15 via api from US — Scanned from CA
Effective URL: https://www.abyssoo.shop/
Submission: On May 15 via api from US — Scanned from CA
Form analysis
7 forms found in the DOMGET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-form" is="spz-form" action-xhr="/search" method="get" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-input" type="text" name="q" value="" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-render.rerender(data=event.value);search-predictive-result.rerender(data=event.value);">
<label for="header-search-form-input" id="header-search-input-replace" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-close.toggleClass(class='header__search-close-show', force=true);header-search-input-replace.toggleClass(class='opacity-0', force=true);"> </label>
<spz-render class="header-search-search-icon-container absolute top-0 color-body-40 i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="header-search-search-icon-render" layout="container" manual=""
i-spzhtml-layout="container">
<template>
<a class="header-search-search-icon flex" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a>
</template>
<a class="header-search-search-icon flex" href="/search?q=">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a></spz-render>
</div>
</form>
GET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-form" is="spz-form" action-xhr="/search" method="get" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-input" type="text" name="q" value="" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-render.rerender(data=event.value);search-predictive-result.rerender(data=event.value);">
<label for="header-search-form-input" id="header-search-input-replace" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-close.toggleClass(class='header__search-close-show', force=true);header-search-input-replace.toggleClass(class='opacity-0', force=true);"> </label>
<spz-render class="header-search-search-icon-container absolute top-0 color-body-40 i-spzhtml-layout-container i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" id="header-search-search-icon-render"
layout="container" manual="" i-spzhtml-layout="container">
<a class="header-search-search-icon flex" href="/search?q=">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a>
<template>
<a class="header-search-search-icon flex" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a>
</template>
</spz-render>
</div>
</form>
GET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-formmd" is="spz-form" action-xhr="/search" method="get" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-inputmd" type="text" name="q" value="" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-rendermd.rerender(data=event.value);search-predictive-result.rerender(data=event.value);">
<label for="header-search-form-inputmd" id="header-search-input-replacemd" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-closemd.toggleClass(class='header__search-close-show', force=true);header-search-input-replacemd.toggleClass(class='opacity-0', force=true);"> </label>
<spz-render class="header-search-search-icon-container absolute top-0 color-body-40 i-spzhtml-layout-container i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" id="header-search-search-icon-rendermd"
layout="container" manual="" i-spzhtml-layout="container">
<a class="header-search-search-icon flex" href="/search?q=">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a>
<template>
<a class="header-search-search-icon flex" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a>
</template>
</spz-render>
</div>
</form>
GET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-formmodel" is="spz-form" action-xhr="/search" method="get" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-inputmodel" type="text" name="q" value="" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-rendermodel.rerender(data=event.value);search-predictive-result.rerender(data=event.value);">
<label for="header-search-form-inputmodel" id="header-search-input-replacemodel" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-closemodel.toggleClass(class='header__search-close-show', force=true);header-search-input-replacemodel.toggleClass(class='opacity-0', force=true);"> </label>
<spz-render class="header-search-search-icon-container absolute top-0 color-body-40 i-spzhtml-layout-container i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" id="header-search-search-icon-rendermodel"
layout="container" manual="" i-spzhtml-layout="container">
<a class="header-search-search-icon flex" href="/search?q=">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a>
<template>
<a class="header-search-search-icon flex" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path></svg>
</a>
</template>
</spz-render>
</div>
</form>
POST
<form id="subscription-form1664529777998" class="subscription-form i-spzhtml-form" action-xhr="/api/customers/newsletters" method="POST" custom-validation="change-interact-and-submit"
@submiterror="subscription-email-error1664529777998.show(text=event.errors);subscription-email-error1664529777998.toggleClass(class='hidden', force=false);"
@submitsuccess="subscription-subscription-success1664529777998.toggleClass(class='hidden', force=false);subscription-form1664529777998.toggleClass(class='hidden', force=true);subscription-popup.open;" novalidate="">
<div class="subscription-form-group flex items-center justify-between ">
<div class="subscription-form-item relative flex-1">
<input class="subscription-form-input clear w-full bg-white" type="text" id="subscription-email1664529777998" name="email" required="" placeholder="Enter your email"
pattern="[a-zA-Z0-9!#$%&'*+\/=?^_`\{\|\}~\-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`\{\|\}~\-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?"
@input-debounced="subscription-error.toggleClass(class='hidden', force=true);">
<label class="subscription-form-label absolute color-body-text-60 text-base" for="subscription-email1664529777998">
</label>
<spz-toast validation-for="subscription-email1664529777998" visible-when-invalid="valueMissing" layout="nodisplay" hidden="" class="i-spzhtml-layout-nodisplay" style="display: none" i-spzhtml-layout="nodisplay">Please fill in this
field</spz-toast>
<spz-toast validation-for="subscription-email1664529777998" visible-when-invalid="patternMismatch" layout="nodisplay" hidden="" class="i-spzhtml-layout-nodisplay" style="display: none" i-spzhtml-layout="nodisplay">Please enter a valid email
address</spz-toast>
<spz-toast id="subscription-email-error1664529777998" layout="nodisplay" class="i-spzhtml-layout-nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"></spz-toast>
</div>
<button class="subscription-submit-btn button-primary flex-shrink-0 body-plus-2" type="submit">
<span class="md:hidden">Subscribe</span>
<svg class="lg:hidden" width="20" height="6" xmlns="http://www.w3.org/2000/svg">
<path d="m14 0 6 3-6 3V4H0V2h14V0z" fill="currentColor"></path>
</svg>
</button>
</div>
</form>
<form class="">
<div class="zb-flex">
<a href="${product.url}?${toQuery({ aid: 'smart_recommend.2.' + data.id, ifb: product.ifb || '', cfb: product.cfb || '', scm: product.scm || data.scm || '', ssp: data.ssp || '' })}" impr="1" imprevt="1" class="zb-w-[132px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0" data-prdct="${product.id}" data-ifb="${product.ifb || ''}" data-cfb="${product.cfb || ''}" data-scm="${product.scm || data.scm || ''}" data-spm="${productIndex}"> <ljs-render layout="container" id="smart_cart_pop_image_${product.id}" template="smart_cart_pop_image_template" manual=""></ljs-render> </a>
<div class="zb-flex zb-flex-col zb-flex-grow zb-justify-between">
<div>
<div class="zb-line-clamp-2 zb-text-sm zb-mb-2">${product.title}</div> <ljs-render layout="container" id="smart_cart_pop_price_${product.id}" template="smart_cart_pop_price_template" manual=""></ljs-render>
</div>
<div>
<div class="zb-relative zb-w-full zb-cursor-pointer">
<div class="zb-border zb-border-solid zb-border-[#eee] zb-px-3 zb-py-[10px] zb-flex zb-items-center zb-justify-between zb-font-semibold zb-text-sm zb-rounded-sm"
@tap="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);smart_cart_pop_variant_${product.id}_mobile.toggleClass(class=zb-hidden);smart_cart_pop_variant_${product.id}_pc.toggleClass(class=smart_cart_pop_variant_pc_show,force=true);smart_cart_pop_variant_modal_${product.id}.open"
spz-if="${!!(product.options && product.options.length && product.options.length > 0) && data.config.variant_select_visible}"> <ljs-render manual="" layout="container" id="smart_cart_pop_variant_text_${product.id}"
template="smart_cart_pop_variant_text_template"></ljs-render> <svg id="smart_pop_variant-select-${product.id}" width="12" height="8" class="zb-ml-2" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M6.00002 7.06738C6.19244 7.06775 6.38498 6.99453 6.5318 6.84772C6.54504 6.83447 6.55769 6.82086 6.56973 6.8069L11.1251 2.25152C11.418 1.95863 11.418 1.48375 11.1251 1.19086C10.8322 0.897968 10.3573 0.897968 10.0645 1.19086L6.00003 5.25529L1.9356 1.19086C1.64271 0.897968 1.16784 0.897968 0.874943 1.19086C0.58205 1.48375 0.58205 1.95863 0.874943 2.25152L5.43033 6.8069C5.44237 6.82086 5.45502 6.83447 5.46826 6.84772C5.61507 6.99453 5.8076 7.06775 6.00002 7.06738Z"
fill="#0A1533"></path>
</svg> </div> <ljs-lightbox layout="nodisplay" disable-unmount="" class="smart_cart_pop_lightbox_pc" id="smart_cart_pop_variant_modal_${product.id}" @close="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);">
<div id="smart_cart_pop_variant_${product.id}_pc" class="zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template"
onclick="event.stopPropagation()" disabled-dj-event="" interference=""> </ljs-variants></div>
</ljs-lightbox>
</div>
<div class="zb-mt-3"> <button product-id="${product.id}" id="smart_cart_pop_atc_btn_${product.id}"
class="zb-flex zb-items-center zb-justify-center zb-w-full zb-text-white zb-py-[10px] zb-h-9 zb-text-xs zb-font-normal zb-border-none zb-rounded-[4px] smart_cart_pop_atc_btn_bg" type="button" role="addToCart"
@tap="smart_cart_pop_loading_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_btn_${product.id}.toggleClass(class=zb-pointer-events-none);custom-func.addATCHook(activity_id='${data.id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${product.scm || data.scm}',ssp='${data.ssp}',spm='${data.spmBase}.${productIndex}')">
<ljs-render layout="container" id="smart_cart_pop_atc_${product.id}" template="smart_cart_pop_atc_template" mamual="" class="notranslate"> </ljs-render>
<div id="smart_cart_pop_added_${product.id}" class="zb-hidden"><span class="zb-flex zb-justify-center zb-gap-1"><svg width="14" height="15" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M8 16.5006C3.58171 16.5006 0 12.9183 0 8.5C0 4.08171 3.58171 0.5 8 0.5C12.4183 0.5 16 4.08171 16 8.5C16 12.9183 12.4183 16.5006 8 16.5006ZM8 2.04344C4.21314 2.04344 1.54287 4.71371 1.54287 8.50057C1.54287 12.2874 4.21314 14.9577 8 14.9577C11.7869 14.9577 14.4571 12.2874 14.4571 8.50057C14.4571 4.71371 11.7869 2.04344 8 2.04344ZM7.26057 11.1909L7.12229 11.3286L7.09543 11.3017C7.02286 11.336 6.94286 11.3577 6.85714 11.3577C6.73543 11.3577 6.62857 11.3109 6.536 11.2463L6.52229 11.2594L6.45371 11.1909C6.45314 11.1903 6.45314 11.1903 6.45257 11.1897L4.09771 8.83486L4.90629 8.02686L6.85714 9.97771L11.1629 5.67143L11.9714 6.48L7.26171 11.1897C7.26114 11.1903 7.26114 11.1903 7.26057 11.1909Z"
fill="white"></path>
</svg>Added</span></div>
<div id="smart_cart_pop_loading_${product.id}" class="zb-hidden">
<div class="smart_cart_pop_loading"></div>
</div>
</button> </div>
</div>
</div>
</div>
<div id="smart_cart_pop_variant_${product.id}_mobile" class="zb-hidden md:zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template" onclick="event.stopPropagation()"
disabled-dj-event="" interference=""> </ljs-variants></div>
</form>
POST //translate.googleapis.com/translate_voting?client=te
<form id="goog-gt-votingForm" action="//translate.googleapis.com/translate_voting?client=te" method="post" target="votingFrame" class="VIpgJd-yAWNEb-hvhgNd-aXYTce"><input type="text" name="sl" id="goog-gt-votingInputSrcLang"><input type="text"
name="tl" id="goog-gt-votingInputTrgLang"><input type="text" name="query" id="goog-gt-votingInputSrcText"><input type="text" name="gtrans" id="goog-gt-votingInputTrgText"><input type="text" name="vote" id="goog-gt-votingInputVote"></form>
Text Content
View all * Free Shipping on orders over $49.98/€46.38 Free Shipping on orders over $49.98/€46.38 Shop now * Welcome to our store Welcome to our store Shop now Free Shipping on orders over $49.98/€46.38 Shop now Welcome to our store Shop now Free Shipping on orders over $49.98/€46.38 Shop now Welcome to our store Shop now View all (2) View all (2) JEANSUR Powered by Translate English,Deutsch,Italiano,Français,Español,简体中文 USD * United States Dollars (USD) * Euro (EUR) * United Kingdom Pounds (GBP) * Canadian Dollars (CAD) Search Account Log in Create an account ${data.data.count > 99 ? '99+' : data.data.count} 0 Cart ${data.line_items.map(item => { return ` ${item.product_title} ${item.options.map(o => ` ${o.name}: ${o.value} `).join('')} ${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return ` ${propertie.name}: View image ` }else{ return ` ${propertie.name}: ${propertie.value} ` } }).join('')} *${item.quantity} Free gift ${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return ` ${discount_item.title} (-) ` }).join('') } `; }).join('')} ${data.total_discount > 0 ? ( ` Discount - ` ) : ''} Subtotal Taxes and shipping calculated at checkout Check out Subtotal $0.00 Taxes and shipping calculated at checkout Check out Your cart is currently empty. Close * HOME * All Products * Women Pants * Skinny Jeans * Flared Jeans * Baggy Jeans * Dresses * Outwears * More links ${function() { var linkList = [ { id: 58912711, index: 1, title: "HOME", url: '/', target: '', tag: "", product0: null , children: [ ] }, { id: 58912713, index: 2, title: " All Products", url: '/collections/all-products', target: '', tag: "", product0: null , children: [ ] }, { id: 58912715, index: 3, title: "Women Pants", url: '/collections/women-pants', target: '', tag: "", product0: null , children: [ ] }, { id: 58912717, index: 4, title: "Skinny Jeans", url: '/collections/skinny-jeans', target: '', tag: "", product0: null , children: [ ] }, { id: 58912719, index: 5, title: "Flared Jeans", url: '/collections/flared-jeans', target: '', tag: "", product0: null , children: [ ] }, { id: 58912721, index: 6, title: "Baggy Jeans", url: '/collections/baggy-jeans', target: '', tag: "", product0: null , children: [ ] }, { id: 58912723, index: 7, title: "Dresses", url: '/collections/dresses', target: '', tag: "", product0: null , children: [ ] }, { id: 58912725, index: 8, title: "Outwears", url: '/collections/outwears', target: '', tag: "", product0: null , children: [ ] }, ].slice(offset); var hasChild = linkList.some(v => (v.children && v.children.length || v.product0)); if (!hasChild) { return ` ${linkList.map(item => ` * ${item.url ? ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `: ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `} ${item.children.length ? ` ` : ''} `).join('')} ` } else { return ` ${linkList.map(item => ` * ${item.url ? ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `: ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `} ${item.children.length ? ` ` : ''} `).join('')} ${linkList.map(item => ` ${item.children ? ` ${item.children.map(link => { return ` * ${link.url ? ` ${link.title} ${link.tag ? ` ${link.tag.label} ` : ''} `: ` ${link.title} ${link.tag ? ` ${link.tag.label} ` : ''} `} ${link.children ? ` ${link.children.map(link_3 => ` * ${link_3.url ? ` ${link_3.title} ${link_3.tag ? ` ${link_3.tag.label} ` : ''} `: ` ${link_3.title} ${link_3.tag ? ` ${link_3.tag.label} ` : ''} `} `).join('')} ` : ''} `}).join('')} ${function() { const data = item.product0; if (!data) return ''; return ` ` }()} ` : ''} `).join('')} ` } }()} * HOME * All Products * Women Pants * Skinny Jeans * Flared Jeans * Baggy Jeans * Dresses * Outwears English,Deutsch,Italiano,Français,Español,简体中文 USD * United States Dollars (USD) * Euro (EUR) * United Kingdom Pounds (GBP) * Canadian Dollars (CAD) Log in Create an account ${function() { if (data === undefined || typeof data !== 'string' || data == '') return ` `; if (data === 'close') return ''; return ` View more `; }()} * WELCOME TO JEANSUR Shop Now TOP WEKEEND SELLERS View all * SALE Holy Grail Tummy Control Bootcut Jeans (Buy 2 Free Shipping) (30) $39.99 $77.99 Save 49% * SALE Tummy Control Skinny Jeans (Buy 2 Free Shipping) (32) $39.99 $79.98 Save 50% * SALE Pull On Denim Joggers(Buy 2 Free Shipping) $39.99 $69.98 Save 43% * SALE Tummy Control Cuffed Slim Fit Jeans (Buy 2 Free Shipping) (33) $39.99 $77.99 Save 49% * SALE Tummy Control Butt Lifting Jeans (Buy 2 Free Shipping) (31) $39.99 $79.98 Save 50% TOP ITEM OF THE WEEK ${data.day_day === undefined ? '00' : data.day_day } Days : ${data.hour_hour === undefined ? '00' : data.hour_hour } Hours : ${data.mins_mins === undefined ? '00' : data.mins_mins } Minutes : ${data.seconds_seconds === undefined ? '00' : data.seconds_seconds } Seconds Save ${data.variant.off_ratio}% - - ${data.eventName == 'mouseout' ? data.selectedOptions[0] : (data.targetOption || data.defaultValue || '')} ${function() { var thumbSwitchName = ''; return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const position = `option${index + 1}`; var isThumbImage = false; if (data.product.need_variant_image && thumbSwitchName === '') { const variantNames = ["color"] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i]; if (name === optionName) { isThumbImage = true; thumbSwitchName = name; } } } const variantType = "button"; const thumbStyle = "image_with_text"; const mouseEvent = isThumbImage ? ('single-product-variant-template-1664529798004-' + optionName + '.rerender(data=event);') : ''; return (variantType == 'dropdown' && !isThumbImage) ? ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `${value}` }).join('')} ` : ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; let thumbImage = null; if (isThumbImage) { const variants = data.product.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} `; }).join('')} `; }).join('') }()} ${function() { let availableQuantity = data && data.available_quantity; const lowStock = 5; if (availableQuantity == undefined) { return ''; } availableQuantity = Math.max(availableQuantity, 0); return availableQuantity > lowStock ? ` ${("{stock} in stock, ready to be shipped").replace(/\{*stock*\}/, availableQuantity)} ` : ` ${("Only {count} left!").replace(/\{*count*\}/, availableQuantity)} `; }()} ${function() { const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; return ` ${product0.images.slice(1, 4).map((image, index) => ` `).join('')} ${PRODUCT0.TITLE} ${product0.images.slice(0, 4).map(image => ` `).join('')} `; }()} Price ${function() { const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; const selectedVariant = product0.variants.find(v => v.available) || product0.variants[0]; return !!selectedVariant ? ` Save ${selectedVariant.off_ratio}% ` : ` - `; }()} ${function() { const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; if((product0.options && product0.options.length) > 0) { return ` `; } return ``; }()} Quantity ${function() { const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; return ` `; }()} ${function() { const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; const selectedVariant = product0.variants.find(v => v.available) || product0.variants[0]; const statusLan = ( (selectedVariant && !selectedVariant.available) || (!selectedVariant && !product0.available)) ? "Sold out" : "Add to cart"; const status = ( (selectedVariant && !selectedVariant.available) || (!selectedVariant && !product0.available)) ? 'soldout' : 'available'; return ` ${statusLan} - Product is unavailable. Product was out of stock. Buy it now `; }()} ${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "1664529798004-exact-inventory-render"; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || data.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return ` Avaliability: Out of stock in stock, ready to be shipped Low stock `; }()} EVERLANE THE UTILITY BARREL PANT(BUY 2 FREE SHIPPING) Price $65.98 $32.99 Save 50% color - ${data.eventName == 'mouseout' ? data.selectedOptions[0] : (data.targetOption || data.defaultValue || '')} Black Bone Navy size XS S (4-6) M (8-10) L (12-14) XL (14-16) 2XL (18-20) 3XL (22-24) Quantity Add to cart - $32.99 Product is unavailable. Product was out of stock. Buy it now Avaliability: in stock, ready to be shipped Sign up and save Subscribe to get special offers, free giveaways, and once-in-a-lifetime deals. Please fill in this field Please enter a valid email address Subscribe Thanks for subscribing Sign Up For Newsletter Subscribe to get special offers, free giveaways, and once-in-a-lifetime deals. Thanks for subscribing NEW ARRIVAL View more View more Plus Size Jeans Women Holes Plus Size Jeans Pants Skinny Elastic Pencil Pants Mid Waist Black Jeans Woman Casual Spring 2-7XL Trousers Women Trousers Button Micro Flare High Waist Stretch Jeans Popular Wash Micro Flare Stretch Ripped Jeans Women Trousers SALE Spring Autumn Thin Fashion Y2K Blue Jeans Women High Waist Stretch Jeans Femme Trousers Vintage Casual Comfort Denim Flare Pants Save 37% Women's Sexy High Waist Hole Bandage Cut Off Denim Jeans Shorts White Black Blue Fashionable high waisted elastic flared pants High Waist Hip Lift Slim Breasted New Jeans Stretch Skinny Trousers For Women SALE 2024 Women's Jeans Slim Fit Slimming Bleached Bell-Bottom Pants Women Flare Pants Trousers Autumn Winter Save 34% Plus Size Jeans Women Holes Plus Size Jeans Pants Skinny Elastic Pencil Pants Mid Waist Black Jeans Woman Casual Spring 2-7XL Trousers Women Trousers Button Micro Flare High Waist Stretch Jeans Popular Wash Micro Flare Stretch Ripped Jeans Women Trousers SALE Spring Autumn Thin Fashion Y2K Blue Jeans Women High Waist Stretch Jeans Femme Trousers Vintage Casual Comfort Denim Flare Pants Save 37% Women's Sexy High Waist Hole Bandage Cut Off Denim Jeans Shorts White Black Blue Fashionable high waisted elastic flared pants High Waist Hip Lift Slim Breasted New Jeans Stretch Skinny Trousers For Women SALE 2024 Women's Jeans Slim Fit Slimming Bleached Bell-Bottom Pants Women Flare Pants Trousers Autumn Winter Save 34% ${ (data.index + 1) + '/' + (Math.ceil(data.total / 3))} ${ (data.index + 1) + '/' + data.total} ABOUT RETURNS Quick return process MEMBER DISCOUNT Our payment in formation is processed securely CONTACT US support@jeansur.com COMPANY INFO * ABOUT US * CONTACT US * PRIVACY POLICY HELP & SUPPORT * RETURN POLICY * SHIPPING INFORMATION * TERMS OF SERVICE * FAQS We accept COMPANY INFO * ABOUT US * CONTACT US * PRIVACY POLICY HELP & SUPPORT * RETURN POLICY * SHIPPING INFORMATION * TERMS OF SERVICE * FAQS We accept © 2024 Jeansur ${function(){ const settings_product_title = "title"; const product_grid_image_size = "100%"; const settings_product_image_hover_on = true; let settings_product_save_label = true; const settings_product_swatches_name = ["color"]; const settings_collection_color_swatches = true; const variantShowLimit = 4; const private_id = 'product-tmpl-' + Math.random().toFixed(6).slice(-6) const product_variants = data.variants || []; const product_id = data.id; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; if (product_grid_image_size !== 'natural') { imageHeight = (imageWidth * parseFloat(product_grid_image_size)) / 100; } const price = Number(data.price_min); let compareAtPrice = Number(data.compare_at_price); let offRatio = data.off_ratio; const type = data.type; const isMock = data.isMock; let product_image_hover_on = false; for (let i = 0; i < product_variants.length; i++) { const item = product_variants[i]; const vcap = Number(item.compare_at_price); if (item.price == price && vcap > compareAtPrice) { compareAtPrice = vcap; offRatio = item.off_ratio; } } let second_image = null; if (settings_product_image_hover_on) { for (let i = 1; i < images.length; i++) { const img = images[i]; if (img.src && img.src.indexOf('video=') === -1) { second_image = img; product_image_hover_on = true; break; } } } let sold_label_on = false; let sale_label_on = false; if (settings_product_save_label == null) { settings_product_save_label = true; } if (!data.available) { sold_label_on = true; } if (settings_product_save_label && compareAtPrice > price && data.available) { sale_label_on = true; } const diffPrice = compareAtPrice - price; const variantValues = []; const showVariants = []; if (data.need_variant_image && settings_collection_color_swatches && settings_product_swatches_name.length > 0) { for (let i = 0; i < (data.options || []).length; i++) { const option = data.originData.options[i]; const optionName = option.name && option.name.toLowerCase(); if (settings_product_swatches_name.includes(optionName)) { for (let j = 0; j < product_variants.length; j++) { const variant = product_variants[j]; const value = variant.options[i].value; if (!variantValues.includes(value)) { variantValues.push(value); showVariants.push(variant); } } break; } } } return ` ${function(){ if(showVariants.length == 0){ return ` ` } return ` ${ showVariants.map(item=>{ return ` `; }).join('') } ` }() } SOLD OUT SALE ${ showVariants.slice(0,variantShowLimit).map((item,index)=>{ return ``; }).join('') } +${showVariants.length - variantShowLimit} ${(settings_product_title === 'sub_title' && data.brief) ? data.brief : data.title} Save ${offRatio}% `; }()} Save ${data.variant.off_ratio}% - ${function() { let availableQuantity = data && data.available_quantity; const lowStock = 5; if (availableQuantity == undefined) { return ''; } availableQuantity = Math.max(availableQuantity, 0); return availableQuantity > lowStock ? ` ${("{stock} in stock, ready to be shipped").replace(/\{*stock*\}/, availableQuantity)} ` : ` ${("Only {count} left!").replace(/\{*count*\}/, availableQuantity)} `; }()} - Price ${function() { const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; return !!selectedVariant ? ` Save ${selectedVariant.off_ratio}% ` : ` - `; }()} Quantity ${function() { const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; const statusLan = ( (selectedVariant && !selectedVariant.available) || (!selectedVariant && !data.available)) ? "Sold out" : "Add to cart"; const status = ( (selectedVariant && !selectedVariant.available) || (!selectedVariant && !data.available)) ? 'soldout' : 'available'; return ` ${statusLan} - Product is unavailable. Product was out of stock. Buy it now `; }()} ${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-shop-exact-inventory-render"; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || data.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return ` Avaliability: Out of stock in stock, ready to be shipped Low stock `; }()} - ${data.eventName == 'mouseout' ? data.selectedOptions[0] : (data.targetOption || data.defaultValue || '')} ${function() { var thumbSwitchName = ''; return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const position = `option${index + 1}`; var isThumbImage = false; if (data.product.need_variant_image && thumbSwitchName === '') { const variantNames = ["color"] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i]; if (name === optionName) { isThumbImage = true; thumbSwitchName = name; } } } const variantType = "button"; const thumbStyle = "image_with_text"; const mouseEvent = isThumbImage ? ('quick-shop-variant-template-' + optionName + '.rerender(data=event);') : ''; return (variantType == 'dropdown' && !isThumbImage) ? ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `${value}` }).join('')} ` : ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; let thumbImage = null; if (isThumbImage) { const variants = data.product.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} `; }).join('')} `; }).join('') }()} ${function() { const images = data.images || []; const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0; const initialSlide = selectedIndex === -1 ? 0 : selectedIndex; return ` ${images.map((image, index) => ` `).join('')} ${images.map(image => ` `).join('')} `; }()} ${DATA.TITLE} Price ${function() { const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; return !!selectedVariant ? ` Save ${selectedVariant.off_ratio}% ` : ` - `; }()} Quantity ${function() { const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; const statusLan = ( (selectedVariant && !selectedVariant.available) || (!selectedVariant && !data.available)) ? "Sold out" : "Add to cart"; const status = ( (selectedVariant && !selectedVariant.available) || (!selectedVariant && !data.available)) ? 'soldout' : 'available'; return ` ${statusLan} - Product is unavailable. Product was out of stock. Buy it now `; }()} ${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : data; const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-view-exact-inventory-render"; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || data.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return ` Avaliability: Out of stock in stock, ready to be shipped Low stock `; }()} - ${data.eventName == 'mouseout' ? data.selectedOptions[0] : (data.targetOption || data.defaultValue || '')} ${function() { var thumbSwitchName = ''; return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const position = `option${index + 1}`; var isThumbImage = false; if (data.product.need_variant_image && thumbSwitchName === '') { const variantNames = ["color"] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i]; if (name === optionName) { isThumbImage = true; thumbSwitchName = name; } } } const variantType = "button"; const thumbStyle = "image_with_text"; const mouseEvent = isThumbImage ? ('quick-view-variant-template-' + optionName + '.rerender(data=event);') : ''; return (variantType == 'dropdown' && !isThumbImage) ? ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `${value}` }).join('')} ` : ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; let thumbImage = null; if (isThumbImage) { const variants = data.product.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} `; }).join('')} `; }).join('') }()} 111 Item has been added ${(function(){ const products = data.products; const getDefaultVariant = function(product){ if (product.min_price_variant.available){ return product.min_price_variant; }else { const avail_variants = product.variants.filter(function(variant){ return variant.available; }); if (avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams = function(product, index){ const variant = getDefaultVariant(product); const params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm || '', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams = Object.keys(params).map(function(key){ return params[key]; }).join('__'); return trackParams; }; const hasMore = (data.products.length - data.target_top_product_num - data.page * data.limit) === 0; return ` ${(function(){ return ` ${data.config.pop_title} ${data.rebate_tips || ''} `; })()} ${product.title} Added `; })()} class SpzCustomComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this._atcLineItem = {}; this.cart_ = {}; this.top_product_ids_ = []; this.products_ = []; this.activityId_ = null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {}; this.config_ = {}; this.page_ = 1; this.limit_ = 10; this.loading_ = false; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('pop mounted'); this.i18n_ = window.smartRecommendI18n && window.smartRecommendI18n[document.documentElement.lang || 'en-US'] || {}; const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const modalEl = document.getElementById("smart_cart_pop_modal"); const spmBase = `smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, }; const that = this; document.addEventListener('dj.addToCart', (event) => { try { const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block || this.rendered_) return; that.fetchActivityData({product_id: e.product_id, variant_id: e.variant_id}).then(data => { if (!data || !data.products || !data.products.length) return; that.config_ = data.config; const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` #plugin_recommend_atc_pop { display: none !important; } `; document.head.appendChild(recommendStyle); if (data.config.pop_frequency === 'once' && window.sessionStorage.getItem('smart_pop_times') > 0) return; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ api.render(Object.assign({}, data, extra), true).then(function() { that.rendered_ = true; if (data.products.length) { const headEl = document.getElementById("smart_cart_pop_head_render"); if (headEl) { SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); }); } SPZ.whenApiDefined(modalEl).then(function(api){ that.impressListen('#smart_cart_pop_activity', function(){ that.trackPluginImpression_(data); }); api.open(); const intersectionObserver = new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio > 0){ !that.loading_ && (that.products_.length - that.target_top_product_num_) === that.page_ * that.limit_ && that.viewMore(); } }, { threshold: [0.1] } ); intersectionObserver.observe( document.querySelector('#smart_cart_pop_view_more_text') ); }); } }) }); }) } catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const that = this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_ }).then(function(data) { data.products = that.products_; data.target_top_product_num = that.target_top_product_num_; data.i18n = that.i18n_; data.spmBase = `smart_recommend_2`; api.render(data); }) }) } fetchActivityData(data) { const that = this; if (data.product_id) { that._atcLineItem = data; } that.loading_ = true; return that.getCart().then(cart => { that.cart_ = cart.cart; return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_activities", { method: "POST", headers: { "Content-Type": "application/json", "store-id": window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ "show_type": 2, "line_item": { "product_id": that._atcLineItem.product_id, "variant_id": that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page": data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){ return res.json(); } }).then(function(data){ data.cart = cart.cart; if (data.page === 1) { that.target_top_product_num_ = data.target_top_product_num || 0; } that.products_ = that.products_.concat(data.products || []); that.page_ = data.page || 1; that.limit_ = data.limit || 10; return data; }).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ = false; }) }); }; setAction_() { this.registerAction('changeBannerColor', (data) => { if (!data.args.data || !data.args.data.data || !data.args.data.data.data) return false; const config = data.args.data.data.data.config; const bannerBgEl = document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) { bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color = config.banner_text_color; } }); this.registerAction('handleProductChange', (data) => { const that = this; const imageEl = document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`); SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data: data.args.data, config: that.config_ }); }); const atcTextEl = document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`); SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data: data.args.data, defaultText: data.args.defaultText, soldOutText: that.i18n_.sold_out }); }); if (data.args.data.variant.available) { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none'); } else { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none'); } }); this.registerAction('handleProduct', (detail) => { const that = this; this.renderProductsForm_(detail.args.data.data); }); this.registerAction('addATCHook', (data) => { const params = data.args; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${params.spm}`, }, once: true }); }); this.registerAction('handleAtcSuccess', (detail) => { detail.args.data.product = detail.args.data.product || {}; detail.args.data.variant = detail.args.data.variant || {}; const defParams = detail.args.product.split('__'); const product_id = detail.args.data.product.id; const product_title = detail.args.data.product.title; const variant_id = detail.args.data.variant.id; const price = detail.args.data.variant.price; const aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb = detail.args.data.product.cfb; const scm = defParams[1]; const spm = defParams[2]; const ssp = defParams[3]; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; const activity_id = `${detail.args.activity_id}`; const target_drive_way = detail.args.target_drive_way; document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden'); setTimeout(() => { document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden'); document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none'); }, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') { const bannerEl = document.getElementById(`smart_cart_pop_banner`); this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) { bannerEl.innerHTML = res.rebate_tips; } }) } }); this.registerAction('handleCartSummary', (event) => { const that = this; const checkoutButtonEle = document.getElementById("smart_cart_pop_checkout_button"); if (checkoutButtonEle) { SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n: that.i18n_ }, false); }); } const tipEl = document.getElementById("smart_cart_pop_tip_info"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; let total_price = cart.total_price; if (!total_price) { SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); } else { this.getBindDiscount_(cart.line_items).then(res => { if (res && res.discount_code){ const total = cart.line_price - cart.total_discount - res.bundle_discount_value; if (total > 0) { total_price = total; } else { total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); }) } }); this.registerAction('open', () => { window.sessionStorage.setItem('smart_pop_times', Number(window.sessionStorage.getItem('smart_pop_times')) + 1); }); this.registerAction('close', () => { this.rendered_ = false; this.products_ = []; window.djInterceptors && window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/cart`, { method: 'GET', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res => res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart => { this.cart_ = cart.cart; return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2, rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item: this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data) { const products = data.products; const listPopRenderEl = document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return; listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){ el.style.background = data.config.add_to_cart_button_color; }); products.forEach(function(product){ const productId = product.id; const productFormEls = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`); let variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_mobile ljs-variants`); if (window.innerWidth > 768) { variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_pc ljs-variants`); } productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.setProduct(product); }); }); variantsEl.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } trackPluginImpression_(rule){ if (window.sa && window.sa.track) { window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` }); } } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids'] && JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) => arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); } if (!carts.length) { Promise.resolve(); } return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ cart: carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart', SpzCustomComponent); ${function(){ return ` ${data.data.rebate_tips || ''} `; }()} ${function(){ const getImageHeight = function(image){ const width = image.width || 500; const height = image.height || 500; const image_size = data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height / width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 * ratio; }; const image = data.data.variant.image || data.data.product.image; return ` `; }()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} ${(function(){ const variant = data.variant; return ` `; })()} ${(function(){ const variant = data.variant; return ` ${ variant.options.map(function(option){ return option.value; }).join("/") || 'Not exist' } `; })()} ${(function(){ const variant = data.data && data.data.variant; const defaultText = data.defaultText || 'Add To Cart'; const text = (!variant || variant.available) ? defaultText: data.soldOutText; return ` ${text} `; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; } return ` ${cart.item_count >=0 ? cart.item_count : '..'} `; })()} ${(function(){ return ` ${data.i18n.checkout} `; })()} GIFTS POINTS Original text Rate this translation Your feedback will be used to help improve Google Translate