GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch
GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch

GRAND PATIO Wicker Patio Furniture Set, Outdoor Sofa Set with Beige Seat Cushions, Outdoor Conversation Furniture Set with Coffee Table for Poolside, Backyard, Balcony, Porch

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

4-Piece/5-Piece Wicker Outdoor Conversation Set

4-Piece/5-Piece Wicker Outdoor Conversation Set

REFINE YOUR OUTDOOR LIVING!

4-Piece Outdoor Conversation Set

4-Piece Outdoor Conversation Set

This modern 4-piece set features a sturdy steel structure, comfortable cushions, and all-weather materials that are built to perform.

REFINE YOUR OUTDOOR LIVING!

4-Piece Outdoor Conversation Set

4-Piece Outdoor Conversation Set

This modern 4-piece set features a sturdy steel structure, comfortable cushions, and all-weather materials that are built to perform.

  • Handwoven Weave Wicker

    Timeless and Stylish, high-quality resin wicker, rated at 2000 UV hours, increased durability, and superior resistance to the sun's UV and fading.

  • Warm Grey Glass Tabletop

    Elevate your space with modern elegance and a richly textured surface. Our tabletop boasts a flawlessly smooth and easy to clean.

  • Comfortable Back

    Experience unparalleled comfort with our body-contoured backrest designed to perfectly align with the curves of your body.

REFINE YOUR OUTDOOR LIVING!

5-Piece Outdoor Conversation Set

5-Piece Outdoor Conversation Set

This 5-piece set will bring you surprises in many places and accompany you day and night, bringing out timeless beauty and splendor.

REFINE YOUR OUTDOOR LIVING!

5-Piece Outdoor Conversation Set

5-Piece Outdoor Conversation Set

This 5-piece set will bring you surprises in many places and accompany you day and night, bringing out timeless beauty and splendor.

  • FLEXIBLE USE OF BENCHE

    The bench can be used alone in an entrance, on a porch, or incombination as seating for 2 additional people.

  • HIGH QUALITY WICKER

    Better materials, all-weather wicker, anti-fade, more sturdy and durable.

  • FLEXIBLE USE OF BENCHE

    Suitable for various occasions, a great choice for office and leisure.

4PCS PRODUCT SPECIFICATIONS

Material: Steel, PE Wicker, SDP Fabric, Foam

Single Chair Dimension: 25"WX29"DX30"H

Loveseat Dimension: 46.5"WX29D"X30"H

Coffee Table Dimension: 18"WX33"DX15"H

Including: 2xSingle Sofa,1x3-Seat Loveseat,1xCoffee Table

Weight Capacity of single Chair: 330lbs

5PCS PRODUCT SPECIFICATIONS

Material: Steel, PE Wicker, SDP Fabric, Foam

Single Chair Dimension: 25"WX29"DX30"H

Loveseat Dimension: 46.5"WX29D"X30"H

Coffee Table: 18"WX33"DX15"H

Wicker Bench: 50"WX18.5"DX14.25"H

Including: 2xSingle Sofa,1x 3-Seat Loveseat,1xCoffee Table

Weight Capacity of single Chair: 330lbs

  • Double-sided Handwoven Wicker:The wicker patio furniture sets features all-weather resin open basketwave patterned PE wicker that is rated at 2000 UV hours, is easy to clean, and extremely resistant to the sun, rain, heat.The simple clean lines of the stool and table offer streamlined simplicity making it easy to blend into many home styles.
  • Comfortable Seat Cushions:Our solution dyed polyester cover cushions for this patio wicker sofa set are cozy and skin-friendly,also easy to store and fold.The fabric of cushions is easy to clean, supports machine washing, and boasts excellent UV and water resistance. Designed for year-round use, it provides a warm seating experience in both winter and summer.
  • STURDY & DURABLE FRAME:Our 4 pieces patio furniture set treated with our industry-leading 3-step corrosion protection to the entire steel frame which provides superior durability and weather resistance.Each seat can provide a high load-bearing capacity of 330 lbs.
  • Various Combinations: This 4-piece outdoor furniture set with its modern design and various combination is perfect choice to fit different places, such as patio, garden, poolside and backyard, etc.allowing for easy transformations. Use the individual chairs to effortlessly furnish your balcony or porch, offering you an all-encompassing comfortable experience.
  • EASY ASSEMBLY & WARRANTY: The dimension of single chair:(W)25"X(D) 29"X(H) 30";3-seat loveseat:(W) 46.5"X(D)29"X(H) 30";warm gray glass top coffee table (W)18"X(D) 33"X(H) 15".The complete conversation set will be delivered to you in 1 box. Grand Patio Outdoor Furniture Set is covered by a 1-year manufacturer warranty from the date of purchase.
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);