Free shipping on orders over $34
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
1 / 8
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry
0% OFF

Cute Fish Anklets for Women Bohemian Blue Rope Fashion Leg Foot Chain Summer Beach Jewelry

$9.02
0 sold
Qty 4085 in stock
Gender : Women
Shape\pattern : Animal
Model Number : ATMD23E66
Style : TRENDY
Length : --
Material : Ribbon
Metals Type : Copper
Brand Name : genenic


Fine or Fashion : Fashion
Item Type : Anklets
TYPE 1 : Fish Hollow Geometry Anklets
TYPE 2 : Foot Chain
TYPE 3 : Leg Bracelet
TYPE 4 : Summer Beach Jewelry

item:ankle chain
material:copper
size:fish:0.5*1.6cm(0.20*0.63in)
Gender: women
package:1 pc anklet
note:
1. please note the photo does not show actual size, please refer to description for size details.
2. please allowed 1-3mm(0.04-0.12in) differences due to manual measurement, 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);