Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com
Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers  Stunahome.com

Winter Plush Warm Waterproof Anti-Slip Barefoot Shoes Outdoor Hiking Sneakers

color - Green

Please select a color

size

Please select a size
Fit: True to size

Price

£0.00 £36.39
138 sold

Quantity

Who are our outdoor barefoot shoes suitable for?

Barefoot shoes are basically suitable for all people who want to do something good for their feet in autumn and winter, strengthen them and improve their foot posture. The following people in particular benefit greatly from barefoot shoes:

People with problems such as:

Pressure marks on the foot

Hallux valgus

Hammertoes

Knee, hip and back pain

Ankle pain

Osteoarthritis

Heel spur

Swellings

Heel pain or splayfoot

Hikers & Autumn walkers: Thermal barefoot shoes are particularly popular with hikers and walkers, as they allow for a more natural walking feeling, strengthen the foot muscles and still keep the feet warm.

Health-conscious people: People who strive for a healthy and active lifestyle are often interested in our barefoot shoes as they can promote improved posture and foot health.

Nature lovers: People who like to be out in nature appreciate the flexibility and grip of barefoot shoes, which give a better feel for the ground. They also feel very connected to nature.

Why are barefoot shoes recommended for both sick and healthy feet?

Sick feet:

Promotes healing: Barefoot shoes can help restore foot health and reduce pain.

Natural gait: They allow for a more natural gait, which can be especially crucial for foot complaints.

No restriction: Unlike conventional shoes, they do not hold the foot in an unnatural or painful position.

Healthy feet:

Natural support: Barefoot shoes promote the maintenance of the natural foot muscles and prevent them from weakening

Promoting balance: They support a better sense of balance and strengthen proprioception.

Prevention: Potential foot problems can be prevented through use, as the foot can move freely and naturally.

What do doctors & experts actually say about barefoot shoes?

Evolutionary design: For thousands of years, people have moved around barefoot or with minimal footwear.

Research shows that the human foot is naturally evolved to function without cushioned soles.

Studies confirm: According to a study published in the Journal of Foot and Ankle Research, barefoot shoes can improve muscle activity and foot mechanics, leading to a more natural gait.

Health benefits: Research by Harvard professors, such as Dr. Daniel Lieberman, has shown that barefoot running can reduce stress on joints and reduce the risk of injury.

Unity of body and nature: Barefoot running is often associated with improved body awareness and an enhanced experience of nature.

Can the shoe get wet?

Of course. The shoe can also be worn on muddy surfaces, in snow and rain. The shoe is waterproof and the upper material dries extremely quickly.

No more aching feet in much too tight shoes in autumn & winter!

Classic autumn and winter shoes are often rigid and constrict our feet. Those who already have problems such as plantar fasciitis, hallux valgus, arthritis or heel spurs quickly suffer from pain.

Our solution: The Stunahome® Joma is an ergonomic, orthopaedic and pain-relieving, lined thermal barefoot shoe that gives your feet space even on cold days and strengthens your natural foot muscles to prevent malpositions.

Stunahome® - Go barefoot even on cold days!

Wide toe box: gives your toes space & prevents malpositions like hallux valgus.

Non-slip barefoot shoe sole: brings you back to your natural gait & trains your muscles.

High-quality thermal lining: wraps your feet in pleasantly warm plush!

Ankle protection: gives you support even on uneven floors.

Adjustable elastic: ensures that the shoe also fits people with wide feet.

Waterproof & easy-to-clean materials: make the Joma the perfect all-weather shoe.

This is why conventional shoes harm our feet

Restricted roll-off: Standard shoes with a high heel profile and moulded toe cause an unnatural foot movement, resulting in uneven loading.

Narrow toe box: Too narrow toe boxes in shoes can deform the foot over time and cause foot conditions such as hallux valgus.

Weak foot muscles: The thick soles and atypical shape of many shoes weaken the foot muscles through lack of activity.

Impaired balance: Thick soles reduce the feedback we get from our feet. This can affect our balance.

Risk of injury: The unnatural gait in standard shoes increases the risk of overloading and other foot complaints.

  Stunahome.com

Barefoot shoes in autumn & winter - The best investment in your health

Muscular balance: Our shoes promote the use of the entire foot musculature for stronger and healthier feet - pain while hiking or walking was yesterday.

Prevention of incorrect posture: The natural rolling behaviour prevents incorrect stress and promotes an upright posture. Foot conditions such as hallux valgus are also alleviated or prevented.

Optimal pressure distribution: The even distribution of pressure on the foot prevents painful pressure points and overloading - no matter how long you are on the move.

Improving circulation: The barefoot feeling promotes circulation and can reduce swelling and fatigue.

Natural gait: The foot has to work by itself, so that the natural gait is promoted. This relieves the joints and the spine.

Improved ground contact: A more direct feel for the ground can improve balance and coordination.

FAQs

1. What is the 60 Day Wear Test Guarantee?

We believe 100% in our products. This is why we offer a 60-Day Wear Test Guarantee where you can test the shoes and decide for yourself.

2. Why Should We Take Care Of Our Feet?

The feet are the foundation of the entire human body. They support your body from the ground up.

3. What is the Plantar Fascia?

The plantar fascia muscle is a long band of muscle tissue and ligaments that stretches all the way from your heel bone to the front of your foot. This supports the arch and bone structure of the foot. When inflamed, this causes a variety of issues in the foot such as Plantar Fasciitis, and Heel Pain.

4. Who Should Wear Orthopedic Shoes?

Orthopedic shoes help align a patient's feet and off-load areas of increased stress (like a collapsed arch, an arthritic joint, or a diabetic ulcer or callus).

5. Can normal people wear orthopedic shoes?

People of all ages wear orthopedic shoes. They are also popular among people without foot problems because they are specifically designed to support the foot, ankle, and leg‘s structure and mechanics and strengthen important muscles.

6. What Happens If I Order the Wrong Size?

Don't worry, this happens. Just send your order back and we will ship the correct size to you at no extra cost.

60 Days Money Back Guarantee

We offer a 60-day guarantee to eliminate your foot pain! We fully stand behind our product and believe we have the best product in the industry. We want to give you a full 2 months to try out our product, and if you don't like it 100%, you can contact us and we'll find a solution.

Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
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.
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('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);