www.athartle.com Open in urlscan Pro
2606:4700::6812:810e  Public Scan

Submitted URL: http://athartle.com/
Effective URL: https://www.athartle.com/
Submission: On August 17 via manual from IN — Scanned from DE

Form analysis 4 forms found in the DOM

GET /search

<form action="/search" method="get">
  <div tabindex="-1" class="header__search tw-relative tw-cursor-pointer tw-w-full lg:tw-w-50 lg:tw-flex tw-items-center">
    <button type="submit" class="header__search-icon lg:hover:tw-opacity-40 tw-p-0 tw-m-0 tw-border-none tw-outline-none tw-bg-none tw-cursor-pointer tw-bg-transparent tw-absolute tw-right-0 tw-h-full tw-z-10" tabindex="-1"><svg
        class=" tw-text-title-color lg:tw-text-header-text-color" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24">
        <path
          d="M11.0917975,4 C15.008489,4 18.1835949,7.17510587 18.1835949,11.0917975 C18.1835949,12.8678606 17.5307106,14.4914344 16.451851,15.7356097 L19.8516329,19.1352532 C20.0494557,19.333076 20.0494557,19.6538101 19.8516329,19.8516329 C19.6757904,20.0274754 19.4028328,20.0470134 19.2054092,19.9102471 L19.1352532,19.8516329 L15.7356097,16.451851 C14.4914344,17.5307106 12.8678606,18.1835949 11.0917975,18.1835949 C7.17510587,18.1835949 4,15.008489 4,11.0917975 C4,7.17510587 7.17510587,4 11.0917975,4 Z M11.0917975,5.01311392 C7.73463324,5.01311392 5.01311392,7.73463324 5.01311392,11.0917975 C5.01311392,14.4489617 7.73463324,17.170481 11.0917975,17.170481 C14.4489617,17.170481 17.170481,14.4489617 17.170481,11.0917975 C17.170481,7.73463324 14.4489617,5.01311392 11.0917975,5.01311392 Z"
          fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path>
      </svg>
    </button>
    <input name="q" type="text"
      class="tw-box-border tw-relative tw-p-0 tw-pr-5 tw-bg-none tw-border-solid tw-border-b tw-border-0 tw-border-title-color lg:tw-border-header-text-color tw-block tw-w-full lg:tw-w-50 tw-h-7 tw-rounded-none focus:tw-outline-none tw-bg-transparent tw-text-inherit tw-text-text-font-size type-text-font-family tw-leading-4 tw-placeholder-title-color lg:tw-placeholder-header-text-color header__search_input"
      placeholder="Search products">
  </div>
</form>

GET /search

<form action="/search" method="get">
  <div tabindex="-1" class="header__search tw-relative tw-cursor-pointer tw-w-full lg:tw-w-50 lg:tw-flex tw-items-center">
    <button type="submit" class="header__search-icon lg:hover:tw-opacity-40 tw-p-0 tw-m-0 tw-border-none tw-outline-none tw-bg-none tw-cursor-pointer tw-bg-transparent tw-absolute tw-right-0 tw-h-full tw-z-10" tabindex="-1"><svg
        class=" tw-text-title-color lg:tw-text-header-text-color" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24">
        <path
          d="M11.0917975,4 C15.008489,4 18.1835949,7.17510587 18.1835949,11.0917975 C18.1835949,12.8678606 17.5307106,14.4914344 16.451851,15.7356097 L19.8516329,19.1352532 C20.0494557,19.333076 20.0494557,19.6538101 19.8516329,19.8516329 C19.6757904,20.0274754 19.4028328,20.0470134 19.2054092,19.9102471 L19.1352532,19.8516329 L15.7356097,16.451851 C14.4914344,17.5307106 12.8678606,18.1835949 11.0917975,18.1835949 C7.17510587,18.1835949 4,15.008489 4,11.0917975 C4,7.17510587 7.17510587,4 11.0917975,4 Z M11.0917975,5.01311392 C7.73463324,5.01311392 5.01311392,7.73463324 5.01311392,11.0917975 C5.01311392,14.4489617 7.73463324,17.170481 11.0917975,17.170481 C14.4489617,17.170481 17.170481,14.4489617 17.170481,11.0917975 C17.170481,7.73463324 14.4489617,5.01311392 11.0917975,5.01311392 Z"
          fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path>
      </svg>
    </button>
    <input name="q" type="text"
      class="tw-box-border tw-relative tw-p-0 tw-pr-5 tw-bg-none tw-border-solid tw-border-b tw-border-0 tw-border-title-color lg:tw-border-header-text-color tw-block tw-w-full lg:tw-w-50 tw-h-7 tw-rounded-none focus:tw-outline-none tw-bg-transparent tw-text-inherit tw-text-text-font-size type-text-font-family tw-leading-4 tw-placeholder-title-color lg:tw-placeholder-header-text-color header__search_input"
      placeholder="Search products">
  </div>
</form>

<form class="zb-flex zb-flex-col zb-relative zb-w-full">
  <div class="zb-overflow-y-auto zb-pb-[100px]">
    <div class="zb-flex zb-items-center zb-pb-4 zb-border-b zb-border-t-0 zb-border-l-0 zb-border-r-0 zb-border-solid zb-border-[#eee] md:zb-border-none"> <ljs-render layout="container"
        class="zb-flex-shrink-0 zb-w-[66px] zb-mr-4 zb-h-[70px] md:zb-hidden" id="smart_recommend_product_image" manual="" template="smart_recommend_product_image_template"></ljs-render>
      <div class="zb-w-full">
        <div class="zb-line-clamp-2 zb-mb-2 zb-text-sm md:zb-text-base">${product.title}</div>
        <div class="zb-flex zb-justify-between zb-items-center"> <spz-render layout="container" template="smart_recommend_price_template" id="smart_recommend_modal_price" manual="">
            <div class="zb-flex zb-items-center"> <ljs-currency class="zb-font-semibold zb-text-[22px] zb-text-[#CD201A] zb-mr-2" layout="container" value="${product.min_price_variant.price}"></ljs-currency> <ljs-currency
                class="zb-text-[#93989D] zb-text-xs zb-line-through" layout="container" value="${product.min_price_variant.compare_at_price}"
                spz-if="${product.min_price_variant.compare_at_price > product.min_price_variant.price ? true : false}"></ljs-currency> </div>
          </spz-render>
          <a class="zb-flex zb-items-center zb-cursor-pointer zb-text-[#212B36] zb-no-underline" href="${product.url}?${toQuery({ aid: 'smart_recommend.' + data.show_type + '.' + data.rule_id, ifb: product.ifb || '', cfb: product.cfb || '', scm: data.scm || '', ssp: data.ssp || '' })}"> <span class="zb-text-[13px]">See detail</span> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path d="M13.1714 12.0007L8.22168 7.05093L9.63589 5.63672L15.9999 12.0007L9.63589 18.3646L8.22168 16.9504L13.1714 12.0007Z" fill="#93989D"></path></svg> </a>
        </div>
      </div>
    </div> <ljs-variants id="smart_recommend_product_variants" layout="container" template="smart_recommend_product_variant_template" slide="smart_recommend_carousel" disabled-dj-event="" interference=""> </ljs-variants>
    <div class="zb-text-sm zb-mb-2">Quantity</div> <ljs-quantity layout="fixed" width="150" height="52" min="1" max="999999" value="1" input-class="!zb-text-base" icon-class="!zb-p-3"></ljs-quantity>
  </div>
  <div class="zb-absolute zb-bottom-0 zb-flex md:zb-flex-col zb-w-full zb-bg-white"> <button
      class="zb-flex zb-items-center zb-mr-2 md:zb-mb-2 zb-justify-center zb-cursor-pointer zb-w-full zb-border zb-border-solid zb-border-[#313131] zb-bg-white zb-rounded zb-h-[42px]" role="addToCart" type="button"
      @tap="smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');"> <span>Add To Cart</span> </button> <button
      class="zb-flex zb-items-center zb-justify-center zb-cursor-pointer zb-w-full zb-bg-[#292929] zb-text-white zb-rounded zb-h-[42px] zb-border-none" type="button" role="buyNow"
      @tap="smart_recommend_loading.showLoading;smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');"> <span>Buy Now</span> </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" 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 &amp;&amp; product.options.length &amp;&amp; product.options.length > 0) &amp;&amp; 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>

Text Content

Enjoy Free shipping on order over $59+ ☘ support@mail.athartle.com


ATHARTLE

EUR
 * United States Dollars (USD)
 * Euro (EUR)
 * United Kingdom Pounds (GBP)
 * Canadian Dollars (CAD)
 * Australian Dollars (AUD)

 * Login
 * Register

0
 * Home
 * TOP
 * BRAS
 * Shapewear
 * Dress
 * TRACKING ORDER


ATHARTLE

0

 * HOME
 * HOT SALE NOW
 * TRACKING ORDER

 * Login


EUR
 * United States Dollars (USD)
 * Euro (EUR)
 * United Kingdom Pounds (GBP)
 * Canadian Dollars (CAD)
 * Australian Dollars (AUD)





HOT SALE NOW!

-49%


FASHION DEEP CUP BRA

(57)
From €27.57
Quick Shop
-45%


POCKET CASUAL DRESS-SOLID COLOR

€30.33
€55.16
Quick Shop
-53%


BUY 2 FREE SHIPPING-FULL SUPPORT NON-SLIP CONVERTIBLE BANDEAU BRA

(24)
From €30.33
Quick Shop
-53%


WIDE LEG JUMPSUIT WITH POCKETS (BUY 2 FREE SHIPPING)

€27.54
€58.85
Quick Shop
-49%


SEXY PUSH UP WIRELESS BRAS

From €25.74
Quick Shop
-44%


HOT SALE - BODYSUIT SHAPEWEAR

(22)
From €25.73
Quick Shop
-49%


UP SHAPER - ABDOMEN PANTS

From €22.97
Quick Shop
-35%


ADHESIVE INVISIBLE GATHERING BRAS

From €22.05
Quick Shop


BRAND STORY

Hi ! This is Athartle. The Creator of LAURA DRESSES. LAURA DRESSES. is mean to
offer unique & high quality products. It was inspired by the colors of the sea,
forest & nature landscape. We spread the idea of more environmental protection
but comfortable, independent life style

Shop now

-48%


WIDE LEG JUMPSUIT WITH POCKETS

€30.33
€58.85
Quick Shop
-37%


WOMEN LONG SLEEVE RUFFLE LAYER BACKLESS SWING MINI DRESS

€34.93
€55.08
Quick Shop
-45%


POCKET CASUAL DRESS-SOLID COLOR

€30.33
€55.16
Quick Shop
-8%


CASUAL T SHIRT POCKETS DRESSES

€31.26
€34.01
Quick Shop

${function(){ const rules = data.data.rules; return `

` }()} ${function(){ const isCart = data.data.isCart; const isCollection =
data.data.isCollection; const isProduct = data.data.isProduct; const isIndex =
data.data.isIndex; return `
${isCart ? 'The items in the shopping cart do not participate in any
recommendation rule. Add the participating items to your shopping cart to check
the design.' : ''} ${isProduct ? 'This product did not participated in any
recommendation rule. Switch to another product to check the design.' : ''}
${isCollection ? 'The items in this collection do not participate in any
recommendation rule. Switch the participating items to check the design.' : ''}
${isIndex ? 'The home page do not participate in any recommendation rule.' : ''}
(This prompt would not display on client-side)
Recommended Products
` }()} ${function(){ const rule = data.data; const getImageHeight =
function(image){ const image_size = rule.config.image_size || 0; const
imageWidth = image.width || 600; const imageHeight = image.height || 800; let
ratio = 0; if(image_size == 0){ ratio = (imageHeight / imageWidth).toFixed(2);
}else if(image_size == 1){ ratio = 1.5; }else if(image_size == 2){ ratio = 1;
}else if(image_size == 3){ ratio = 0.75; } return imageWidth * ratio; }; 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('&'); return `
${rule.config.title}
 * ${product.title}
   
   ${rule.config.quick_shop_button_text}



` }()}


class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) {
super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {};
this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = '';
this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ =
''; this.order_id_ = ''; } static deferredMount() { return false; }
isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; }
buildCallback() { const template_type =
window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) {
this.show_type_ = 3; this.product_resource_id_ =
window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) {
this.show_type_ = 4; this.collection_resource_id_ =
window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){
this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; }
else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ =
window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){
this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop();
} this.templates_ = SPZServices.templatesForDoc(this.element);
this.setAction_(); } mountCallback() { console.log('smart mounted'); const that
= this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const
isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res &&
res.rules && res.rules.length) { const blockEl =
document.getElementById('smart_recommend_block');
SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res},
true).then(() => { if (isGeek && that.show_type_ === 6) {
blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; }
const recommendStyle = document.createElement('style'); recommendStyle.innerHTML
= ` .plugin__recommend_container,.app-recommend-card { display: none !important;
} `; document.head.appendChild(recommendStyle); const fetchList = [];
res.rules.forEach((rule) => {
fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll =
Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule,
index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl
= document.getElementById('smart_recommend_rule_' + rule.id);
SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule},
true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`,
function(){ that.trackRuleImpress(rule); }); const btnElList =
document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`);
btnElList.forEach((btnEl) => { if (btnEl && rule.config &&
rule.config.quick_shop_button_bg_color &&
rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor =
rule.config.quick_shop_button_bg_color; btnEl.style.color =
rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if
(window.top !== window.self) { const template_type =
window.SHOPLAZZA.meta.page.template_type; const holderEl =
document.getElementById('smart_recommend_preview_no_data_placeholder');
SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart:
template_type === 13, isCollection: template_type === 2, isProduct:
template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); }
setAction_() { this.registerAction('quickShop', (data) => { const that = this;
const product_id = data.args.product_id; const productIndex =
data.args.productIndex; const rule_id = data.args.rule_id; const ssp =
data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb =
data.args.ifb; const modalRender =
document.getElementById('smart_recommend_product_modal_render'); if (product_id)
{ this.fetchProductData(product_id).then((res) => { const product = res.products
&& res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb
= ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product:
product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm,
show_type: that.show_type_}, true).then(() => { const modalEl =
document.getElementById('smart_recommend_product_modal');
SPZ.whenApiDefined(modalEl).then((modal) => {
that.impressListen('#smart_recommend_product_modal', function(){
that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); });
modal.open(); }); const formEl =
document.getElementById('smart_recommend_product_form');
SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const
variantEl = document.getElementById('smart_recommend_product_variants');
SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product);
}); }); }) }); } }); this.registerAction('handleScroll', (data) => {
this.directTo(data.args.rule_id, data.args.direction); });
this.registerAction('handleProductChange', (data) => { const variant =
data.args.data.variant; const product = data.args.data.product; const
imageRenderEl = document.getElementById('smart_recommend_product_image');
SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant,
product: product }, true); }); }); this.registerAction('handleAtcSuccess',
(detail) => { const data = detail.args; data.data.product = data.data.product ||
{}; data.data.variant = data.data.variant || {}; const product_id =
data.data.product.id; const product_title = data.data.product.title; const
variant_id = data.data.variant.id; const price = data.data.variant.price; const
rule_id = data.rule_id; const aid =
`smart_recommend.${this.show_type_}.${rule_id}`; const ifb =
data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp;
const scm = data.scm; const spm =
`smart_recommend_${this.show_type_}.${data.spmIndex}`; 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, } };
this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => {
const params = data.args; const spm =
`smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ =
window.djInterceptors && window.djInterceptors.track.use({ event:
'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` +
params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm:
`..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); }
tranckAddToCart(detail) { if (window.$) {
window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() {
const payload = { show_type: this.show_type_, }; let that = this; if
(this.show_type_ === 6) { let line_items = []; return
this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) {
line_items = res.cart.line_items.map((item) => { return { product_id:
item.product_id, variant_id: item.variant_id, quantity: item.quantity, price:
item.price } }); } payload.line_items = line_items; that.cart_items_ =
line_items; return that.fetchRulesRequest(payload); }); } else { if
(this.show_type_ === 3) { payload.line_items = [{ product_id:
this.product_resource_id_ }]; } else if (this.show_type_ === 4) {
payload.collection_id = this.collection_resource_id_; } else if (this.show_type_
=== 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ ===
8) { payload.order_id = this.order_id_; } return
this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return
fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method:
"POST", headers: { "Content-Type": "application/json" }, body:
JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); }
}); } fetchCart() { return
fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`)
.then((res) => { if (res.ok) { return res.json(); } }); }
fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields:
["title", "url", "image", "min_price_variant.price",
"min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_
=== 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; }
else if (this.show_type_ === 4) { payload.collection_id =
this.collection_resource_id_; } else if (this.show_type_ === 6) {
payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) {
payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) {
payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root +
"/api/possum/recommend_products", { method: "POST", headers: { "Content-Type":
"application/json" }, body: JSON.stringify(payload) }).then(function(res){
if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); }
fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root +
"/api/possum/products", { method: "POST", headers: { "Content-Type":
"application/json" }, body: JSON.stringify({ product_ids: [product_id], fields:
[ "images", "options", "min_price_variant", "variants"] })
}).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){
console.log(err); const loadingEl =
document.getElementById('smart_recommend_loading'); if (loadingEl) {
loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele)
return; if (window.getComputedStyle) { return
window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; }
directTo(id, direction) { const scrollElement =
document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth =
parseInt(this.getStyle(scrollElement, 'width')); const scrollLength =
(blockWidth * 0.19 - 12) * 5; if (!scrollElement) return; if (direction ===
'left') { scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft -
scrollLength, 0), behavior: 'smooth' }); } else { const scrollPoint =
scrollElement.scrollWidth - scrollElement.clientWidth; scrollElement.scrollTo({
left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 :
scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } }
trackRuleImpress(rule) { if (window.sa && window.sa.track) {
window.sa.track("plugin_common", { plugin_name: "upsell", event_type:
"impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type:
this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block });
window.sa.track("module_impressions", { aid:
`smart_recommend.${this.show_type_}.${rule.id}`, support_app_block:
window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) {
window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell",
event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id,
show_type: this.show_type_, }); } 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-block', SpzSmartBlockComponent);
${(function(){ const product = data.product; 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('&'); return `
${product.images.map((image) => { return `` }).join('')}

${product.title}

See detail
Quantity
Add To Cart Buy Now
`; })()}
${(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("") }
` })()}

HELP & SUPPORT

HELP & SUPPORT
FAQ How to Measure Shipping & Delivery Return/Exchange Cancellation Policy
Payment Policy Privacy Policy Terms of Service

COMPANY INFO

COMPANY INFO
About Us Contact Us INTELLECTUAL PROPERTY RIGHTS

SIGN UP AND SAVE

Tips: All orders will be shipped within 3-5 days after receiving the order. We
will do our best to service you. If you have any questions, please contact our
official email: support@mail.athartle.com. Thank you!

Sign up




2023 athartle© All Rights Reserved







111
GIFTS

POINTS



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; }; return `
${(function(){ return `
${data.config.pop_title}

${data.rebate_tips || ''}
`; })()}
${product.title}
Added


${data.i18n.view_more}

`; })()}

class SpzCustomComponent extends SPZ.BaseElement { constructor(element) {
super(element); this.templates_ = null; this.container_ = null;
this._atcLineItem = {}; this.cart_ = {}; this.products_ = []; this.activityId_ =
null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {};
this.config_ = {}; } 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(); }) } }) }); }) } catch (e) {
console.error(e); } }); } unmountCallback() { } fetchActivityData(data) { const
that = this; if (data.product_id) { that._atcLineItem = data; } 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;
that.products_ = that.products_.concat(data.products || []); return data; })
.catch(function(e){ console.log(e); }); }); }; 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('viewMore', (data) => {
const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); data =
data.args; const that = this;
SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ that.fetchActivityData({
page: data.page + 1, limit: data.limit }).then(function(data) { data.products =
that.products_; data.i18n = that.i18n_; data.spmBase = `smart_recommend_2`;
api.render(data); }) }) }); 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) => { this.onBuyNowClick();
const tipEl = document.getElementById("smart_cart_pop_tip_info"); if (!tipEl)
return; const that = this; let cart = this.cart_; 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("plugin_common", { plugin_name: "upsell", event_type:
"impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: 2 });
window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` });
} } onBuyNowClick() { const checkoutEl =
document.getElementById("smart_cart_pop_checkout"); if (!checkoutEl) return;
checkoutEl.addEventListener('click', function(e) { const trackData = {
plugin_name: "upsell", event_type: "checkout_submit", rule_id:
`${this.activityId_}`, show_type: 2 }; window.sa &&
window.sa.track("plugin_common", trackData); }); } 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 image_size =
data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio =
(image.height / image.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 : '..'}
Checkout
`; })()}