Free shipping on orders over $34
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
7 / 12
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry
0% OFF

2023 New Chinese Hairpin Hair Stick Rose Flower Crystal Branch Metal Texture Vintage Hair Accessories for Women Headwear Jewelry

$13.73
0 sold
Color
Qty 9942 in stock

Material : Alloy
Type : Hair Sticks
Pattern Type : Print
Gender : WOMEN
Item Type : Headwear
Style : Fashion
Department Name : Adult
























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