Free shipping on orders over $34
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2 / 6
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry
0% OFF

2024 New Women's Jewelry Set Exquisite Handmade Flower Earrings Necklace Ring 925 Silver Handmade Enamel Flower Jewelry

$25.40
0 sold
Gem Color
Qty 10000 in stock
Certificate : no
is_customized : Yes
Side Stone : Other Natrual material
Shape\pattern : Flower
Gender : Women
Jewelry Sets Type : Necklace/Earrings/Ring
Occasion : ENGAGEMENT
Style : Classic
Certificate Type : HRD
Metals Type : None
Main Stone : Zircon

Item Type : jewelry sets
Fine or Fashion : Fine
Necklace weight : 4.8g
Earring weight : 3g
Ring weight : 3g




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