Free shipping on orders over $34
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
1 / 8
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift
0% OFF

Todorova Natural Clear Crystal Beads Anklets For Women Girls Bohemian Handmade Jewelry Trendy Party Birthday Gift

$9.11
0 sold
Qty 2000 in stock
Gender : Women
Style : Bohemia
Material : Metal
Metals Type : Copper
Brand Name : Todorova


Fine or Fashion : Fashion
Item Type : Anklets
Fine or Fashion : Fashion
Style : Trendy Classic Vintage



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);