5% Rabatt: DETO5 | Kostenloser Versand für €59+ | Inkl. MwSt.
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
17 / 32
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox
Verwandte Produkte Mag diese nicht?
0% OFF
DE.Peggybuy

Schmetterling Mandala Federmäppchen - 5d DIY Handwerk Aufbewahrungsbox

1423530.01

€10.99
2 Volumen der Verkäufe
Style - WJH2001
Anzahl 1000Bestand
Spezifikation:
Herkunft: Festlandchina
Produktgröße: 200,00 x 150,00 x 10,00 mm
Produktgröße: 7,87 x 5,91 x 0,39 Zoll
Material: Acrylmaterial
Größe: 20x15x3cm
Gewicht: 95g
DIY Diamond Painting Produktionsschritte:
1. Öffnen Sie das Feld und aktivieren Sie die Spezialwerkzeuge für Diamond Painting
2. Überprüfen Sie die Farbe des Harzdiamanten und ordnen Sie sie in der Codierungsreihenfolge an
3. Decken Sie die obige Bandkarte auf, Sie werden viele Symbole sehen, die der Farbcodierung entsprechen
4. Entsprechend der entsprechenden Farbcodierungsvorrichtung, die dem mit Harz eingelegten Diamant
5. Es wird empfohlen, dass ein Satz Harzdiamanten schneller fertiggestellt wird
6. Um ein perfektes Diamond Painting zu erstellen, platzieren Sie die Zeichnung an einer Stelle, und jede Symbolreihe muss nicht diamonds
verlassen7. Um auf der Zeichnung eine gute Figur zu machen, installieren Sie bitte das Klassifizierungsarray in der Ebene des Materials oben
8. Das Spleißen muss flach, sauber und ohne Risse sein
Mäßige Größe ohne besonderen Geschmack, außergewöhnliche Handwerkskunst und Persönlichkeitsdesign, bequem für die Aufbewahrung von Stiften, Acryloberfläche, robustes Aussehen, leicht zu tragen.

Hinweis:
Aufgrund unterschiedlicher Monitoreinstellungen und Lichtverhältnisse kann die tatsächliche Farbe des Artikels leicht von den Bildern abweichen. Vielen Dank für Ihr Verständnis!
Bitte erlauben Sie einen Maßunterschied von 1-2 cm aufgrund der manuellen Messung.



1 x Diamond Painting Federmäppchen
1 x Diamond Painting Tools (Drill Pen, Speed Plate)
Diamond Painting Federmäppchen Diamond Art Organizer Box DIY Diamond Painting Bleistift Box Ästhetisches Diamond Painting Papeter Case Schulbedarf
Merkmal:
1. Künstlerisches Flair mit Diamond Painting Federmäppchen: Mit einem einzigartigen, von Diamond Painting inspirierten Design verleiht dieses Federmäppchen Ihrem Schreibtisch oder Arbeitsbereich einen Hauch von Eleganz und kombiniert Funktionalität mit dekorativem Reiz.
2. Kreativer Ausdruck mit Diamond Art Organizer Box: Personalisieren Sie Ihre Organizer-Box mit Diamond Art und genießen Sie den DIY-Prozess. Nach seiner Fertigstellung dient es sowohl als praktischer Gegenstand als auch als einzigartiges Kunstwerk, das Ihren persönlichen Stil widerspiegelt.
3. Stressabbau durch Diamond Painting Pencil Box: Beschäftigen Sie sich mit der beruhigenden Aktivität, Ihre Bleistiftbox mit Diamond Painting zu dekorieren. Dieser kreative Prozess hilft, Stress abzubauen, ist für alle Altersgruppen geeignet und bietet einen unterhaltsamen und entspannenden Zeitvertreib.
4. Perfektes Geschenk mit Diamond Art Pen Halter: Ideal für Freunde, Kollegen oder Enthusiasten, ist dieser Stifthalter sowohl praktisch als auch kreativ und damit ein perfektes Geschenk für Geburtstage, Feiertage, Abschlussfeiern und mehr.
5. Vielfalt mit Diamond Painting Papeterie-Etuis: Dieses Schreibwarenetui ist in verschiedenen Stilen und Farben erhältlich und bietet Platz für unterschiedliche Geschmäcker und stellt sicher, dass jeder ein Produkt finden kann, das seinen ästhetischen Vorlieben entspricht.





1 x Diamond Painting Pencil Case
1 x Diamond Painting Tools (Drill Pen, Speed Plate)

1. Rund Diamant / Vierkant Diamant

Rund Diamant: Runde Diamanten sind schlichter als quadratische Diamanten. Zwischen den runden Diamanten gibt es Lücken, die jedoch die Dekoration und Wertschätzung nicht beeinträchtigen.

Vierkant Diamant: Quadratische Bohrdiamanten sehen etwas "sauberer" aus als runde Bohrdiamanten. Sie lassen sich leichter anordnen und erzeugen aus der Ferne ein "volleres" Mosaik-Aussehen.

Speziell Geformte Diamant

Diamanten in verschiedenen Formen (Herzform, Blumenform, Tropfenform usw.).

Die meisten davon sind Kristalldiamanten, die durchscheinend sind und das Licht schöner brechen.

AB Diamant —— Aurora Borealis Diamant

Diese Premium-Diamanten sind mit einer Regenbogenbeschichtung überzogen, die das Leuchten des Nordlichts nachahmt!

Die Formen sind runde und quadratische Diamanten.

2. Größenauswahl

Mindestgröße: 25cm (9.75 Zoll). Maximalgröße: über 100cm (39 Zoll).

Empfohlen für Anfänger: 30–40 cm (11.7–15.6 Zoll).

Tatsächliches Bild:

Die Titelgröße entspricht der Leinwandgröße, die Mustergröße ist 5cm kleiner als die Leinwandgröße.

Finden Sie keinen Stil, der Ihnen gefällt? Sie können es nach Ihren Wünschen personalisieren!

Exklusives Design von Peggybuy – Kombination von Namen mit Zeichentrickfiguren

[DEPBWS10] [DEPBWS12] [DEPBWS15]

(3 Sekunden lang drücken, um den Code direkt zu kopieren)

Wenn Sie eine detailliertere Planberatung wünschen, kontaktieren Sie uns bitte: service@peggybuy.com

Verwandte Produkte Mag diese nicht?
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1724747933612').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
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);
Kundenrezensionen

Das sagen unsere Kunden.

Kommentare veröffentlichen
Bewertungen der Kunden
Wow, du bist ganz unten angekommen
Neueste
Am meisten gemocht
Höchste Bewertungen
Niedrigste Bewertungen
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.