HIBESTGOODS
Log in
Create an account
0
Home
Sunglasses
Nail Beauty
Nail Gel Polish
Nail patches
Nail accessories
Nail equipment
More links
Home
Sunglasses
Nail Beauty
Nail Beauty
Nail Gel Polish
Nail patches
Nail accessories
Nail equipment
Log in
Hot Girl Nail Tips Wear Nail Piece Long r Finished Product Fake Nails Wear Nail Nail
Price
$3.97
$3.97
Save
$0.00
Free shipping
color
Lf001 Wear Nail Tip [Glue]]
Lf005 Wear Nail Tip [Glue]]
Lf019 Wear Nail Tip [Glue]]
Lf285 Wear Nail Tip [Glue]]
Lf343 Wear Nail Tip [Glue]]
Lf344 Wear Nail Tip [Glue]]
Lf346 Wear Nail Tip [Glue]]
Lf348 Wear Nail Tip [Glue]]
Lf351 Wear Nail Tip [Glue]]
Lf352 Wear Nail Tip [Glue]]
Lf353 Wear Nail Tip [Glue]]
Lf355 Wear Nail Tip [Glue]]
Lf356 Wear Nail Tip [Glue]]
Lf357 Wear Nail Tip [Glue]]
Lf358 Wear Nail Tip [Glue]]
Lf359 Wear Nail Tip [Glue]]
Lf360 Wear Nail Tip [Glue]]
Lf362 Wear Nail Tip [Glue]]
Lf368 Wear Nail Tip [Glue]]
Lf370 Wear Nail Tip [Glue]]
Lf521 Wear Nail Tip [Glue]]
Lf419 Wear Nail Tip [Glue]]
Bks841 Wear Nail Tip [Glue Type]]
Bks526 Wear Nail Tip [Glue Type]]
Bks527 Wear Nail Tip [Glue]]
Bks874 Wear Nail Tip [Glue]]
Bks506 Wear Nail Tip [Glue]]
Bks534 Wear Nail Tip [Glue Type]]
Bks547 Wear Nail Tip [Glue Type]]
Bks562 Wear Nail Tip [Glue]]
Bks707 Wear Nail Tip [Glue]]
Bks873 Wear Nail Tip [Glue Type]]
JP122-9 Wear Nail Tip [Glue]]
Lf369 Wear Nail Tip [Glue]]
Lf495 Wear Nail Tip [Jelly Glue]]
LF363 Wear Nail Tip [Jelly Glue]]
Lf499 Wear Nail Tip [Jelly Glue]]
Lf527 Wear Nail Tip [Jelly Glue]]
Lf540 Wear Nail Tip [Jelly Glue]]
Bks940 Wear Nail Tip [Jelly Glue]]
Bks971 Wear Nail Tip [Jelly Glue]]
Bks1214 Wear Nail Tip [Jelly Glue]]
Bks1216 Wear Nail Tip [Jelly Glue]]
Bks1217 Wear Nail Tip [Jelly Glue]]
Bks1220 Wear Nail Tip [Jelly Glue]]
Bks1237 Wear Nail Tip [Jelly Glue]]
Bks1241 Wear Nail Tip [Jelly Glue]]
Bks1248 Wear Nail Tip [Jelly Glue]]
Bks1259 Wear Nail Tip [Jelly Glue]]
Lf472 Wear Nail Tip [Jelly Glue]]
Lf474 Wear Nail Tip [Jelly Glue]]
Bks665 Wear Nail Tip [Jelly Glue]]
Lf341 Wear Nail Tip [Glue]]
Lf342 Wear Nail Tip [Glue]]
LF363 Wear Nail Tip [Glue]]
Lf364 Wear Nail Tip [Glue]]
Bk1003 Wear Nail Tip [Glue Type]]
Please select a color
Quantity
Add to cart -
$3.97
Buy it now
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Description
Sign up and save
Entice customers to sign up for your mailing list with discounts or exclusive offers. Include an image for extra impact.
SUBSCRIBE
Thanks for subscribing
No Thanks
const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);