www.women-defense.com Open in urlscan Pro
104.17.247.119  Public Scan

Submitted URL: https://www.girls-safety.com/
Effective URL: https://www.women-defense.com/
Submission: On July 03 via automatic, source certstream-suspicious — Scanned from DE

Form analysis 4 forms found in the DOM

GET /search

<form class="header__search tw-relative tw-flex md:tw-w-full tw-h-10 lg:tw-py-[18px]" action="/search" method="get">
  <input
    class="header__search-input tw-box-border tw-inline-block md:tw-flex-1 tw-m-0 tw-pl-9 tw-pr-4 tw-py-3 tw-text-[13px] tw-leading-4 tw-text-header-search-text-color tw-bg-header-search-bg type-text-font-family  tw-rounded-none tw-rounded-l-sm lg:tw-rounded-sm  tw-border-0 tw-outline-none  lg:tw-w-[232px] "
    autocomplete="off" type="text" name="q" placeholder="Search products">
  <button type="submit"
    class="header__search-icon tw-absolute tw-left-[10px] tw-top-1/2 tw--translate-y-1/2 tw-m-0 tw-p-0 tw-text-header-search-text-5 tw-cursor-pointer tw-text-0 tw-bg-transparent type-text-font-family tw-border-0 tw-outline-none hover:tw-text-header-search-text-color"
    tabindex="-1"><svg class="" width="18" height="18" xmlns="http://www.w3.org/2000/svg">
      <path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
      <path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
        fill="currentColor"></path>
    </svg></button>
  <span
    class="header__search-icon-close tw-hidden tw-h-[18px] tw-w-[18px] tw-rounded-full tw-bg-[#C0C0C0] tw-text-[#FFFFFF] tw-items-center tw-justify-center tw-absolute tw-right-[10px] md:tw-right-0 tw-top-1/2 tw--translate-y-1/2 tw-m-0 tw-p-0 tw-text-header-search-text-5 tw-cursor-pointer tw-text-0 tw-bg-transparent type-text-font-family tw-border-0 tw-outline-none hover:tw-text-header-search-text-color"
    tabindex="-2"><svg class="" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M2.746 1.992a.2.2 0 0 0-.283 0l-.471.471a.2.2 0 0 0 0 .283L5.245 6 1.992 9.25a.2.2 0 0 0 0 .283l.471.472a.2.2 0 0 0 .283 0L6 6.753l3.252 3.253a.2.2 0 0 0 .283 0l.472-.472a.2.2 0 0 0 0-.283L6.753 6l3.253-3.253a.2.2 0 0 0 0-.283l-.472-.471a.2.2 0 0 0-.283 0L6 5.245 2.746 1.992z"
        fill="currentColor"></path>
    </svg></span>
  <button type="submit"
    class="header__search-submit-btn lg:tw-hidden tw-m-0 tw-px-4 tw-py-[11px] tw-text-sm tw-leading-[18px] tw-text-header-search-btn-text-color tw-bg-header-search-btn-bg type-text-font-family  tw-rounded-none tw-rounded-r-sm  tw-border-0 tw-outline-none">Search</button>
</form>

GET /search

<form class="header__search tw-relative tw-flex md:tw-w-full tw-h-10 lg:tw-py-[18px]" action="/search" method="get">
  <input
    class="header__search-input tw-box-border tw-inline-block md:tw-flex-1 tw-m-0 tw-pl-9 tw-pr-4 tw-py-3 tw-text-[13px] tw-leading-4 tw-text-header-search-text-color tw-bg-header-search-bg type-text-font-family  tw-rounded-none tw-rounded-l-sm lg:tw-rounded-sm  tw-border-0 tw-outline-none  lg:tw-w-[232px] "
    autocomplete="off" type="text" name="q" placeholder="Search products">
  <button type="submit"
    class="header__search-icon tw-absolute tw-left-[10px] tw-top-1/2 tw--translate-y-1/2 tw-m-0 tw-p-0 tw-text-header-search-text-5 tw-cursor-pointer tw-text-0 tw-bg-transparent type-text-font-family tw-border-0 tw-outline-none hover:tw-text-header-search-text-color"
    tabindex="-1"><svg class="" width="18" height="18" xmlns="http://www.w3.org/2000/svg">
      <path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
      <path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
        fill="currentColor"></path>
    </svg></button>
  <span
    class="header__search-icon-close tw-hidden tw-h-[18px] tw-w-[18px] tw-rounded-full tw-bg-[#C0C0C0] tw-text-[#FFFFFF] tw-items-center tw-justify-center tw-absolute tw-right-[10px] md:tw-right-0 tw-top-1/2 tw--translate-y-1/2 tw-m-0 tw-p-0 tw-text-header-search-text-5 tw-cursor-pointer tw-text-0 tw-bg-transparent type-text-font-family tw-border-0 tw-outline-none hover:tw-text-header-search-text-color"
    tabindex="-2"><svg class="" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M2.746 1.992a.2.2 0 0 0-.283 0l-.471.471a.2.2 0 0 0 0 .283L5.245 6 1.992 9.25a.2.2 0 0 0 0 .283l.471.472a.2.2 0 0 0 .283 0L6 6.753l3.252 3.253a.2.2 0 0 0 .283 0l.472-.472a.2.2 0 0 0 0-.283L6.753 6l3.253-3.253a.2.2 0 0 0 0-.283l-.472-.471a.2.2 0 0 0-.283 0L6 5.245 2.746 1.992z"
        fill="currentColor"></path>
    </svg></span>
  <button type="submit"
    class="header__search-submit-btn lg:tw-hidden tw-m-0 tw-px-4 tw-py-[11px] tw-text-sm tw-leading-[18px] tw-text-header-search-btn-text-color tw-bg-header-search-btn-bg type-text-font-family  tw-rounded-none tw-rounded-r-sm  tw-border-0 tw-outline-none">Search</button>
</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 &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>

<form class="modal__form-style_template8" id="modal__form" style="background: rgba(255,255,255,1) none no-repeat scroll center center/cover; width: 550px; ">
  <div class="modal__image-wrapper" style="background: #B70F02 url(https://cdn.shoplazza.com/6080e370bc443e61b6710b14511bcfea.png) no-repeat scroll center center/cover; ">
    <div class="modal__title">
      <p><span style="text-decoration: underline; font-family: 'arial black', 'avant garde';"><span style="font-size: 22px; font-weight: bold; color: #f1f6f6; text-decoration: underline;">SALE 50% OFF</span></span></p>
    </div>
    <div class="modal__description">
      <p><strong><span style="font-size: 16px; font-family: Arvo; color: #e5e5e6;">Shipping also 50% OFF</span></strong></p>
      <p><span style="font-size: 16px; font-family: Arvo; color: #e5e5e6;">For orders above $50</span></p>
      <p><span style="font-size: 16px; font-family: Arvo; color: #e5e5e6;">- MID YEAR SALE -</span></p>
    </div>
    <div class="countdown__container notranslate">
      <div class="day" style="display: none;">
        <span class="day__word1 countdown__word" style="color: #000; background-color: #ffffff; ">0</span>
        <span class="day__word2 countdown__word" style="color: #000; background-color: #ffffff; ">0</span>
        <span class="countdown__colon" style="color: #ffffff; ">:</span>
      </div>
      <div class="hour">
        <span class="hour__word1 countdown__word" style="color: #000; background-color: #ffffff; ">1</span>
        <span class="hour__word2 countdown__word" style="color: #000; background-color: #ffffff; ">1</span>
        <span class="countdown__colon" style="color: #ffffff; ">:</span>
      </div>
      <div class="minute">
        <span class="minute__word1 countdown__word" style="color: #000; background-color: #ffffff; ">3</span>
        <span class="minute__word2 countdown__word" style="color: #000; background-color: #ffffff; ">5</span>
        <span class="countdown__colon" style="color: #ffffff; ">:</span>
      </div>
      <div class="second">
        <span class="second__word1 countdown__word" style="color: #000; background-color: #ffffff; ">2</span>
        <span class="second__word2 countdown__word" style="color: #000; background-color: #ffffff; ">3</span>
      </div>
    </div>
  </div>
  <div class="modal__content">
    <div id="modal__close-btn" class="d-flex align-items-center justify-content-center modal__button " style="background-color: rgba(208,2,27,1); border-color: rgba(208,2,27,1); "><span
        style="color: rgb(255, 255, 255); font-size: 16px; font-weight: bold;" data-mce-style="color: #ffffff; font-size: 16px; font-weight: bold;">SHOP NOW</span></div>
    <div class="modal__close-icon">×</div>
  </div>
</form>

Text Content

GIRLS-DEFENSE

Search
 * Log in
 * Create an account

0
 * Home
 * MID YEAR SALE
 * Packagings
 * Gifts
 * Personal Safety
 * About Us
 * More links

 * Home
 * MID YEAR SALE
 * Packagings
 * Gifts
 * Personal Safety
 * About Us
 * More links




GIRLS-DEFENSE

 * Log in
 * Create an account

0
Search

 * Home
 * MID YEAR SALE
 * Packagings
 * Gifts
 * Personal Safety
 * About Us



Log in




MID YEAR SALE :)

50% discounts + 50% off on shipping for orders above $50

SHOP NOW

CUSTOM DESIGNS

For custom designs and enquiries contact support@girls-defense.com

Click me
 * 1
 * 2



BAG & DEFENSE SETS


(NEW) TOTE BAG AND EVERYTHING MJ FASHION BAGS SELF DEFENSE KEYCHAIN SET WITH
OPTIONAL EXTRA BUCKET BAG AND DUFFLE BAG

(124)
From $44.97   $79.99 Save $35.02 Save $35.02


(NEW) COW PRINT SELF DEFENSE KEYCHAIN WITH COW TUMBLER AND FASHION BAGS!

(87)
From $29.98   $49.99 Save $20.01 Save $20.01


(NEW) SUNFLOWER SELF DEFENSE KEYCHAIN WITH OPTIONAL SUNFLOWER TUMBLER AND
TOTEBAG

(87)
From $43.97   $79.99 Save $36.02 Save $36.02


(NEW) FLUFFY VELVET MJ TOTE BAG SELF DEFENSE KEYCHAIN SET

(162)
From $49.99   $99.99 Save $50.00 Save $50.00


(NEW) ENGRAVED MJ TOTE BAG SELF DEFENSE KEYCHAIN SET WITH OPTIONAL EXTRA BUCKET
BAG AND DUFFLE BAG

(162)
From $48.97   $89.99 Save $41.02 Save $41.02


(NEW) EVERYTHING FRENCH L AND FASHION BAGS SELF DEFENSE KEYCHAIN SET

(67)
From $29.98   $49.99 Save $20.01 Save $20.01


NEW 24-IN-1 LEOPARD CHEETAH THEME SELF DEFENSE KEYCHAIN WITH OPTIONAL FASHION
BAGS, TUMBLER AND DISCREET COMB

(87)
From $29.98   $49.99 Save $20.01 Save $20.01


(NEW) TAYLOR THEME SELF DEFENSE KEYCHAIN WITH SWIFTIE BRACELET

(20)
From $34.98   $59.99 Save $25.01 Save $25.01
View more

THEME DEFENSE SETS


SUP3RNATURAL THEME SELF DEFENSE KEYCHAIN WITH DEAN, SAM AND CASTEL

(109)
From $29.98   $49.99 Save $20.01 Save $20.01


N!GHTM@RE BEFORE CHRISTMAS AND EVERYTHING NBC SELF DEFENSE KEYCHAIN IN LIMITED
SPECIAL BUNDLES (MUST BUY)

(77)
From $29.98   $49.99 Save $20.01 Save $20.01


EVERYTHING ST!TCH SELF DEFENSE KEYCHAIN WITH BIG FUNKO FIGURE, HANDBAGS,
TUMBLERS AND SPECIAL COLLECTIONS

(43)
From $29.98   $49.99 Save $20.01 Save $20.01


B3TTLEJU!CE SELF DEFENSE KEYCHAIN WITH JUMBO FIGURE

From $29.98   $49.99 Save $20.01 Save $20.01


SC00BY D00 THEME SELF DEFENSE KEYCHAIN WITH BIG FUNKO FIGURE & KEYCHAIN

(47)
From $29.98   $49.99 Save $20.01 Save $20.01


ST@RBUCKS THEME SELF DEFENSE KEYCHAIN WITH SHINY TUMBLER

(87)
From $29.98   $49.99 Save $20.01 Save $20.01


EVERYTHING GR!NCH SELF DEFENSE KEYCHAIN WITH GR!NCH TUMBLER AND SPECIAL BUNDLES

(37)
From $29.98   $49.99 Save $20.01 Save $20.01


VALENTINES ST!TCH & ANG3L SELF DEFENSE KEYCHAIN WITH JUMBO LOVE PLUSHIES AND
MORE!

(73)
From $29.98   $49.99 Save $20.01 Save $20.01
View more

MEDICAL & ALLERGY SETS


MEDICAL & ALLERGY CUSTOM DESIGN SELF DEFENSE KEYCHAIN SAFETY KIT WITH MEDICAL
ALERT CARDS, MEDICAL CONDITION CARDS, MEDITAGS AND MEDIPINS

From $41.96   $74.99 Save $33.03 Save $33.03


MEDICAL ALERT CARDS (WRITABLE TO FILL IN YOUR MEDICAL DETAILS AND EMERGENCY
CONTACTS)

$2.99   $5.99 Save $3.00 Save $3.00
View more

MYSTERY SCOOPS


NBC SURPRISE BOX SELF DEFENSE SET WITH MYSTERY BOX BLIND BOX

(39)
From $26.99   $49.99 Save $23.00 Save $23.00


CHRISTMAS SURPRISE BOX SELF DEFENSE SET WITH 24 MYSTERY GIFTS ADVENT CALENDAR
MYSTERY BOX BLIND BOX

(28)
From $44.97   $79.99 Save $35.02 Save $35.02
View more

SINGLE ITEMS


FASHION BAGS!

(55)
From $9.99   $21.99 Save $12.00 Save $12.00


TUMBLERS & STORAGE BUCKETS

(23)
$14.99   $39.99 Save $25.00 Save $25.00


MINI RECHARGEABLE TZ WITH LED FLASHLIGHT

From $14.99   $19.99 Save $5.00 Save $5.00


SPICY FOR WOMEN

From $9.99   $14.99 Save $5.00 Save $5.00


DISCREET PEN

$14.99   $19.99 Save $5.00 Save $5.00


KITTY PAW

From $4.99   $14.99 Save $10.00 Save $10.00


DISCREET COMB

$14.99   $30.00 Save $15.01 Save $15.01


SOS SAFETY ALARM WITH LED FLASHLIGHT

$12.99   $20.99 Save $8.00 Save $8.00


DISCREET KEY

$5.99   $10.99 Save $5.00 Save $5.00


TRENDY WRIST STRAP WITH METAL LOCK

$7.99   $14.99 Save $7.00 Save $7.00


SAFETY DOOR LOCK

$6.99   $13.99 Save $7.00 Save $7.00


SD STICKS

$7.99   $14.99 Save $7.00 Save $7.00
View more

CUSTOMER REVIEWS

" Girls-defense has truly saved me from danger threats. Every girl MUST buy one"

 * KATE M.
   
   2 days ago
   
   
   
   Every girl MUST buy this!! Absolutely useful and stunning, it has already
   protected me from several real encounters. 10/10 will buy again

 * BRYAN H.
   
   2 days ago
   
   
   
   As a veteran dad, I guarantee you this is the best solution to keep your
   family safe. Compact with strong performance, great all in one self defense
   kit.

 * CHLOE R.
   
   3 days ago
   
   
   
   Seriously best buy EVER. Every lady has the right to protect herself. Don't
   risk urself with suspicious threats or potential dangers. We NEED this.



GLOBAL SHIPPING

CUSTOMER SERVICE

Short content about your store

SECURE PAYMENT

Short content about your store

CONTACT LIVE WHATSAPP

Short content about your store

Subscribe
Thanks for subscribing

Email and contacts

+1 (213) 254-8350 support@girls-defense.com

© 2024 Girls-Defense Privacy Statement Terms of Service Return & Refunds
Policies Delivery and Availability Contact Us





111
GIFTS

POINTS




A***d in Somewhere purchased

(NEW) Cow Print self defense keychain with Cow tumbler and fashion bags!

55 minutes ago

A***d

recently purchased

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}
`; })()}


SALE 50% OFF

Shipping also 50% OFF

For orders above $50

- MID YEAR SALE -

0 0 :
1 1 :
3 5 :
2 3
SHOP NOW
×
See detail

See detail
$0.00

Quantity

1

Add to cart