Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
9/14
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet
9/14

Calendrier De Compte à Rebours 24 jours Bricolage Perlé Boîte Aveugle Cadeau De Noël Bracelet

$19.99
$0.00
Save $-19.99
Style
Please select a style
Quantity
Weight: 0kg

🎁VOUS AIMEZ L'IDÉE D'OUVRIR UN CADEAU TOUS LES JOURS JUSQU'À NOËL ? HECK YA, QUI N'A PAS ?!


LES CALENDRIERS DE L'AVENT SONT UNE TRADITION DE LONGUE DATE PENDANT LES VACANCES POUR UNE BONNE RAISON… ILS SONT AMUSANTS!

Descriptions

  • We count down the days till Christmas with anticipation and excitement!?

  • Chaque jour, ils obtiendront un charme unique et délicat, comme le père Noël, le bonhomme de neige, la perle de rubis, etc.
  • Après 24 jours de chasse au trésor, ils concevront leur propre magnifique bracelet par leur découverte le soir de Noël !
  • Quel cadeau significatif !

    CARACTÉRISTIQUES

    • Type de Père Noël et de bonhomme de neige, nouveau conception2021, kit de fabrication de bracelets à breloques pour filles uniques, dévisser facilement pour retirer le capuchon d'extrémité. Après avoir enfilé les perles. Revisser le capuchon d'extrémité. Pas d'outil, pas de colle, pas de gâchis.

    • Cet ensemble de fabrication de bijoux comprend 5 ornements de Noël, 1 outil multifonction, 4 bracelets en chaîne d'animaux, 4 colliers et 4 jades de longueur réglable pour s'adapter à la plupart des cadeaux de bijoux de collier de filles pour les filles.

    • Cadeau pour une fille de 8 à 12 ans : le kit de fabrication de bracelets à breloques DIY est livré avec une belle boîte rose. Il est très pratique et facile à transporter. Cadeau de bijoux facile à bricoler pour les filles de 8 à 12 ans. Kit de bracelets de chaîne de bricolage pour filles, charmants cadeaux créatifs de fabrication de bijoux pour l'anniversaire, l'amitié et Noël des filles, Thanksgiving, etc.

    • Artisanat sympa pour petite amie et amante : ce kit de bijoux pour filles offre à vos enfants des heures de plaisir et de réflexion sans fin avec lesquelles jouer, même si vous pouvez vous joindre et concevoir de très beaux bracelets ensemble. Les bricolages en famille sont les plus significatifs et les plus précieux au monde. Y compris toutes les trouvailles de bijoux pour répondre à vos bracelets DIY, plus besoin de courir pour trouver tout le kit de fournitures.

    • Jouets pour filles : aident à promouvoir un sentiment de calme, réduisent le stress, l'anxiété et peuvent augmenter la concentration et l'attention.

    SPÉCIALISATIONS

    • Matériel : Alliage
    • Style : Père Noël, bonhomme de neige, wapiti, père Noël + bonhomme de neige + wapiti
    • Poids : 138 g
    • Longueur : 19 cm

    EMBALLAGE INCLUT

    • 1 * Calendrier de boîte aveugle de bracelet bricolage

    REMARQUE

    • En raison des différents effets d'affichage et d'éclairage, la couleur réelle de l'article peut être légèrement différente de la couleur affichée sur l'image.
    • Veuillez permettre de légers écarts de mesure dus à la mesure manuelle.
    const isSpecialHeroTheme = window.SHOPLAZZA?.theme?.merchant_theme_name == 'Hero' && window.SHOPLAZZA?.theme?.merchant_theme_c_version == '2.2.19'; const specialHeroThemeClassName = 'hero_2_2_19_smart_recommend_block'; class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.C_SETTINGS.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.C_SETTINGS.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.C_SETTINGS.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.C_SETTINGS.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { const that = this; const themeName = window.C_SETTINGS.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); this.initBlockClass(blockEl); this.initItemClass(blockEl); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; if (rule.products && rule.products.length) { const modalRender = document.getElementById('smart_recommend_js_root'); const $dest = document.getElementById('cart'); const isLifeStyle = /Life.*Style/.test(window.C_SETTINGS.theme.merchant_theme_name); if (modalRender && isLifeStyle && $dest.clientWidth > 767) { modalRender.classList.add('zb-mt-[-180px]') } } const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }); if (isSpecialHeroTheme) { ruleEl.querySelectorAll(`.smart_recommend_title`).forEach(dom=>{ dom.classList.add('type-title-font-family'); }); document.querySelectorAll(`.${specialHeroThemeClassName} #smart_recommend_rule_ul_${rule.id} .zb-recommend-price-line-through .money`).forEach(dom=>{ dom.classList.add('type-body-font-family'); }); }; }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.C_SETTINGS.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } initBlockClass(blockEl) { if (!blockEl) return; if (blockEl.parentElement && blockEl.parentElement.offsetWidth === document.body.clientWidth) { blockEl.classList.add('smart_recommend_block_fullscreen'); }; if (isSpecialHeroTheme) { blockEl.classList.add(specialHeroThemeClassName); }; } initItemClass(blockEl) { if (blockEl) { const containerWidth = blockEl.offsetWidth; let itemWidth = ''; if (containerWidth > 780) { itemWidth = '16%'; } else if (containerWidth > 600) { itemWidth = '20%'; } else { itemWidth = '24%'; } const itemStyleEl = document.createElement('style'); itemStyleEl.innerHTML = `.zb-recommend-li-item{ width: ${itemWidth}; }`; document.body.appendChild(itemStyleEl); } } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (modalRender) { document.body.appendChild(modalRender); } if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.C_SETTINGS.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.C_SETTINGS.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.C_SETTINGS.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.C_SETTINGS.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.C_SETTINGS.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.C_SETTINGS.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.C_SETTINGS.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent);