🎁Free Shipping on Orders Over $59🎉
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
7 / 10
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
Lovely  Knitted Doll Christmas Gift Bags
23% OFF
Fnkus

Lovely Knitted Doll Christmas Gift Bags

$9.96 $12.96
0 sold
Style
Qty 1000 in stock

🎅CHRISTMAS’S COMING !🎄

Are you tired of wrapping Christmas gifts one after another? Try this adorable Doll Decoration Christmas Gift Bag!

 *✭˚・゚✧*・゚*✭˚・゚✧*・゚**✭˚・゚✧*・゚*✭˚・゚✧*・゚**✭˚・*✭˚・゚✧*・゚*✭˚・゚✧*・゚* 

🎅🎄 Comes in Many Different Patterns that will Brighten your Christmas Celebration!

Main Features:

🎄BagSize - "5.9*7.9in"🎄

The size of this bag is perfect for Christmas gifts, party gifts, candy, apples, and Christmas tree decorations.

🎉Style - Christmas Gift Bags🎉

There are 4 styles of lovely candy bagsSnowman☃️Santa🎅🏻, Reindeer🦌 and Bear🐻.

✨High-quality✨

These adorable bags are made of high-quality fabric, so they are soft, durable, and reusable.

❄️Drawing rope design❄️

It is very suitable for you to store, take out items or hang them on the Christmas tree as decorations.

🎁Unique design and vivid colors🎁

Super cute, love-filled, and novel Christmas package will give your children/family a wonderful Christmas! 

 *✭˚・゚✧*・゚*✭˚・゚✧*・゚**✭˚・゚✧*・゚*✭˚・゚✧*・゚**✭˚・*✭˚・゚✧*・゚*✭˚・゚✧*・゚* 

Specifications:

  • Material: Plush, Knitted Fabric, Linen
  • Weight: 0.2 lb / per each
  • Bag Size: 15*20cm (5.9*7.9in).
  • Style: Santa Claus / Snowman / Red Hat Bear  / Reindeer 
    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);