Free shipping on orders over $34
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
1 / 13
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry
0% OFF

Y2K Punk Star Pendant Black Crystal Necklace for Women Double Chain Beads Necklace Choker Stainless Steel Necklace Jewelry

$13.61
0 sold
Metal Color
Qty 8944 in stock
Occasion : Party
Compatibility : All Compatible
Function : Mood Tracker
Shape\pattern : cross
Material : Metal
Chain Type : Snake Chain
Style : Vintage
Necklace Type : Chains Necklaces
Gender : Women
Metals Type : Zinc alloy


Fine or Fashion : Fashion
Item Type : Necklaces













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