GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden
GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden

GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set with Patio Coffee Table, Boho Bistro Set for Porch, Backyard, Balcony, Garden

$299.99
$0.00
-$-299.99
Size-3-Piece
Please select a size
Quantity
Free shipping-FedEx or UPS delivery
30-Day Return
Sustainably made-1 Year Warranty
Secure payments-PayPal installment
Shipping

GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set

GRAND PATIO Patio Set, Outdoor Furniture Set with Beige Thick Cushions, Wicker Sofa Set

  • Thick Cushions

    Soft touch and UV and weather-resistant, easy to clean and maintain.

  • Hand-woven Wicker

    A durable natural wicker alternative that is tough and beautiful.

  • Unique Arc Design

    The tilted design provides more support and enveloping feeling.

REFINE YOUR OUTDOOR LIVING!

Grand patio 3-Piece Outdoor Boho furniture Set

Grand patio 3-Piece Outdoor Boho furniture Set

This modern 3-piece set features a sturdy steel structure, comfortable cushions, and all-weather materials that are built to perform. Create your personalized outdoor living space with this modern set!

REFINE YOUR OUTDOOR LIVING!

Grand patio 5-Piece Outdoor Boho furniture Set

Grand patio 5-Piece Outdoor Boho furniture Set

This modern 5-piece set features a sturdy steel structure, comfortable cushions, and all-weather materials that are built to perform. Create your personalized outdoor living space with this modern set!

  • Semi-encircling Steel Frame: The steel frame entwined with elegant wicker brings the curved appearance of larger size. Combined with thick cushions, it enhances the sense of seat wrapping and greater activity space and comfort. Perfect for your courtyard, garden, terrace, or pool area, it creates a chic atmosphere for leisure and relaxation. Each chair weight capacity is 350 lbs which is compliant with U.S. quality and test standard.

  • Boho Style Hand-woven Wicker: Each piece features natural color wicker intricately woven to create warm and inviting textures, offering a comfortable space for you to relax. Our attention to handcraftsmanship ensures a unique and exquisite feel, elevating the quality of your tasteful home decor. Embrace the Boho aesthetic and elevate your living experience with our thoughtfully crafted wicker furniture.

  • Thickening and Durable Cushion: The light beige yarn-dyed fabric cushion cover is not only soft and skin-friendly but also waterproof, UV, and wind resistant, ensuring long-lasting comfort in any outdoor setting. The thickened seat cushion provides extra soft support and a sense of wrapping, enhancing your sitting comfort to new heights.

  • X-shaped Base Coffee Table: Featuring an innovative X-shaped base with adjustable foot pads, this table ensures excellent stability, even on uneven surfaces, providing reliable support for your items. The smooth surface of the desktop is not only easy to care for but also showcases a high-quality coating that is durable and resistant to scratches, wear, and the stresses of everyday use.

  • Easy to Install and Maintain: With detailed instructions and special tools, you only need to carefully follow the instructions and easily screw 7 screws to complete the assembly. In 10 minutes, you can easily enjoy the cozy experience of this stylish and comfortable chair. With its low-maintenance design, this chair is the perfect companion for all your outdoor adventures.

PRODUCT SPECIFICATIONS

Material:Steel, PE Wicker, SDP Fabric, Foam

Color:Frame Natural; Cushion Beige

Including:2 x Single Sofa, 1 x Coffee Table

Weight Capacity of single chair:350lbs

Single Chair Dimensions: (W)28.25"X(D) 28"X(H) 27.75"

Coffee Table Dimensions: Φ17.75"X(H)17.75"

FAQs

Yes. You can open the zipper, take out the cushion liner, and clean the cushion cover in the washing machine.

Yes, it's water-resistent but not waterproof.

No. This all-weather wicker is artificial, rated for 1500 hours of UV light, and resistant to fading for up to 3 years. Just a light cleaning with a soft clean cloth, mild soap, and water will remove the buildup of dirt and pollen.

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);