Livraison gratuite pour les commandes supérieures à 50 euros.
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
1 / 13
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau
23% OFF

4pcs diy keychain diamant peinture gateau crme glace anneau de cl pendentif cadeau

€5.99 €7.79

296133

Quantité 44 Stock
fonctionnalit¡ì|s:
BRICOLAGE peinture, ing¡ì|nieux.
En utilisant la r¡ì|sine comme vernis, les sequins en r¡ì|sine sont ¡ì|blouissants et brillants dans la lumi¡ì¡ìre.

Sp¡ì|cifications:
Mat¡ì|riel: porte-cl¡ì|s acrylique + diamant en r¡ì|sine, perceuse en forme sp¡ì|ciale
Taille: environ 57 * 60mm/2.24 * 2.36 "
Type de diamant: foret complet

BRICOLAGE diamant peinture ¡ì|tapes de production:
1. Ouvrez la bote et v¡ì|rifiez les outils sp¡ì|ciaux de tirage de diamant
2. Voir la couleur de diamant de r¡ì|sine, arrang¡ì| dans l£¤ordre de codage
3. D¡ì|couvrez le dessin de bande ci-dessus, vous verrez beaucoup de symboles correspondant au codage de couleur
4. selon la pince cod¡ì|e en couleur correspondante, les diamants incrust¡ì| de r¡ì|sine
5. sugg¡ì|r¡ì| qu£¤un type de diamant de r¡ì|sine un ensemble compl¡ì|t¡ì| plus rapidement
6. afin de cr¡ì|er une peinture diamant parfaite, les dessins mis ensemble en un seul endroit tous les symboles de ligne n£¤ont pas ¡쨨 rester coinc¡ì| Diamants
7. pour couper une bonne figure sur les dessins tenir le tableau tri¡ì| mont¡ì| sur le plan du mat¡ì|riau ci-dessus
8. Splices besoin plat contre le soign¡ì|, n£¤ont pas de fissures
9. apr¡ì¡ìs un bon combat, le reste de l£¤¡ì|cart ¡쨨 la colle des symboles correspondants de diamants
10. pour compl¡ì|ter un bon dessin au diamant, placez-le dans votre s¡ì|lection cadre appropri¡ì| (ce produit ne fournit pas de cadre)

Notes:
1. c£¤est la peinture de diamant de bricolage, pas fini, et vous devez finir vous-m¡ìome. Tous les produits sont la mesure manuelle, s£¤il vous plat permettre 1-2cm variation.
2. parce que la lumi¡ì¡ìre est diff¡ì|rente de l£¤¡ì|cran, le couleur de l£¤¡ì|l¡ì|ment peut ¡ìotre l¡ì|g¡ì¡ìrement diff¡ì|rente de l£¤image. S'il vous plat comprendre.

4 X porte-cl¡ì|s
1 X outil de peinture de diamant (stylo de forage, vitesse jusqu£¤¡쨨 la plaque)
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.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.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.SHOPLAZZA.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() { console.log('appzebu smart mounted'); const that = this; const themeName = window.SHOPLAZZA.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'); 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; 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; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.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); }); } } }); } 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 (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 }, true); }); }); 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.SHOPLAZZA.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.SHOPLAZZA.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.SHOPLAZZA.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.SHOPLAZZA.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.SHOPLAZZA.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.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.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);