Plunge Backless Body Shaper Bra

$26.99
$58.70
Save 54%
Bra Color : BEIGE
Bra Size : S - Fits 32ABC,34A
Quantity
The current produc does not participate any Rebate. Switch the participating product to check the design.
(This prompt will not be displayed on the client-side.)
people are viewing this right now
/** @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-1539149753700').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);
Description

  🚛 Shipping>>Worldwide Express Shipping Available
🛫 Payments Via PayPal and CreditCard
⭐Fast refund Guarantee>> Partial or full refund depend on the situation

Buy 2 Free Shipping 

Our New Backless Body Bra Has The Internet Turning Heads!

It amplifies your natural silhouette and provides a seamless look under all of your outfits. Truly a "must-have"!

Get ready to show your back.

Thousands Of Women Are Obsessed

👗  Plunge Shapewear With Deep V-Neck And Backless Design, Underwire Cups, U Plunge.Commonly Worn Under Wedding Dresses, Party Dresses, And A Variety Of Low-Cut Outfits And Necklines.

Stretchy Fabric For Easy To Put On

💞Seamless Design For Invisible Underneath Any Type Of Clothing. Open Crotch Design For Convenient Bathroom Use. Silicone Band Holds Garment In Place. There Is A Pair Of Extra-Longer Straps For Better Adjust And Fit.

Wear Anything With Confidence

Show your back with confidence. Don't worry about loose sillicone pads or boob tape that will come off when you sweat. Our backless body shaper will give you the support you need, all day and all night long. The shaper comes with extra clear straps and underwire support.

Before Our Peachy Bodysuit & After!

See how perfect you can look with our New & Improved Backless bodysuit.  Specially designed to move with your body, Silky Velvet feel! Sit, dance, and stretch with ease.

Backless body Shapers is to help women quickly create a beautiful body shape in daily life,showing their beauty and confidence.You can wear our shapewear in your favorite costumes for daily life,study,and cocktail receptions.Put on our daily wear series,hide the belly of the abdomen,and instantly shape the body.

Q&A

Q: If ur 34 ddd, 136 lbs 5' 7 what size would one need?

Answer: Dear customer,please choose the proper size according to our size chart, if you have long torso or plump body , a large size could be better for you.

Q: Are the straps removable?

Answer: Of course , Hi, the straps could be removed if you don't like it.

Q: Size chart recommends a medium for 34D. Do the cups run small??

Answer: Hi, we'd recommend a larger size if you have plumpy or short torso, if the size does not fit, please apply a replacement . Wish you have a good day.

Q: Does this help with your tummy support??

Answer: Hi, it will do some help with tummy support, unlike traditional shaperwear, we suggest you wear it under any types of clothes such as casual outfits to party, cocktail, wedding dresses or gowns and more.

Q: Can you see the outlines through a dress?

Answer: Hi, please don't worry, this bodysuit fits well with dress.

What Makes Us So Special

  • Multiple styling options: The straps can be adjusted to be worn with halter style dresses, low-plunge front, and criss-cross styles
  • Removable invisible straps: Completely seamless and unnoticeable.
  • Designed to move with your body: Sit, dance, and stretch with ease.
  • Push-Up underwire: For a supported and lifted bust and a serious cleavage boost
  • Sticky adhesives: To keep the garment attached to your body without it slipping off
  • Seamless thong back with hook & eye closure: Smoothes out camel toe and gives you easy bathroom access

Specification
  • 1 / 2 x Backless body Shapers 
  • Main fabric composition:Nylon84%,Spandex16%
  • Function:Gathering, butt lift, body sculpting, chest support
  • Thickness:Ordinary

Click ADD TO CART To Order Yours Now!

SATISFACTION GUARANTEE

  • All packing processes are strictly sanitized
  • Money-Back Guarantee: We will gladly issue a replacement or refund if your items arrive damaged or become defective within 15 days of normal usage.
  • Payment success & send e-mail for your confirmation before shipping.
  • Orders can be canceled, returned or exchanged if there are problems in quality, colors and delayed shipping

AFTER-SALE SERVICE

  • If for whatever reason you're not completely satisfied, then return the product within 30 days!
  • We ship to 127 countries, including US, CA, AU and all countries in Europe.
  • We are convinced that we have some of the most innovative products in the world, and we hope to support this through arisk-free 90-day guarantee.
  • If you do not have a positive experience for any reason, we will do our best to ensure that you are 100% satisfied with the purchase.
Shipping & Delivery

🌏We offer Worldwide Tracked Shipping on all orders.🌎

Our goal is to offer you the best shipping options no matter where you live. Every day we deliver to hundreds of customers across the world, ensuring that we provide the very highest levels of responsiveness at all times.

Shipping and Delivery:

  • Standard Delivery--Free Shipping : Over 69.99 dollars 
  • Deliveries are typically made Monday to Friday between 8:00am - 6:00pm
  • Working days are: Monday to Friday (and do not include public holidays or weekends)
  • We do not ship orders on weekends or holidays. 
  • Shipping: U.S. orders fulfill and ship within 1-3 business days followed by 7-10 business days transit time for most products in the store. With delays in shipping worldwide, some products may take 1-2 weeks transit time.  We strive to get our customers their items in a timely manner with the current worldwide supply chain delays. Feel free to inquire about shipping times for specific products at hezizi0215@gmail.com
  • Shipping methods:4PX、YunExpress、Wanb Express、UBI

    Our Guarantee:

    • All your orders have a 14-day money-back guarantee!
    • Sometimes your orders can get lost/damaged on their journey to you. If this occurs, we will send you a replacement free of charge! Just contact our support team at hezizi0215@gmail.com and we will get in touch with you as soon as possible!

    Please Note: We may ask you to send us a picture of the damaged product before shipping the replacement.

    Important Remarks

    • Refunds are not given on free items. However, replacements are given for items lost while shipping.
    • Replacements are sent up to 7 days after receiving your item.
    • For more information about refunds, please read our Refund Policy.

    Tracking your order:

    To track your order, we will send you all the tracking information to your e-mail.

    Please note that your tracking number is the one we send automatically when we ship your order (it can take up to 2 days). 

    If you cannot find your tracking number, please get in touch with us at hezizi0215@gmail.com



    CONTACT US

    hezizi0215@gmail.com

    Refund Policy

    We are committed to providing customers with the best online shopping experience and satisfaction. We welcome your feedback and strive to improve the customer’s shopping experience. At the same time, we work hard to deal with your feedback. We are ready to provide customers with services that surpass everything.

    If you are not completely satisfied with your purchase, you may return or exchange your item within 14 days. Please note that the return period starts from the day you receive your order.

    HOW DO I RETURN AN ITEM?

    If you check that there is a fault with an item or wrong item you have received, please contact us within 14 days from receiving your order.

    Please provide your order number as well as the reason for your return. Our customer service team will review the return request and will send further instructions if the return is approved.

    Returned items must be in original packaging, including any accessories, manuals, and documentation. If the condition of the product shipped back to us is not in an acceptable condition we reserve the right to not refund or exchange.

    ·Non-returnable items include damaged products through customer mishandling.

    ·Returns made without a receipt may be refused.

    ·The return address will be obtained after contacting customer service to obtain the returned consent.

    WHAT IF THE ITEM(S) I RECEIVED ARE DEFECTIVE/INCORRECT/DAMAGED?

    Did you receive a faulty unit or the wrong product? Simply not satisfied with your order?

    Please contact our Customer Support team to start the return process. Please include the following information:

    ·Order number

    ·Proof of purchase(Order Summary)

    ·Video or photo of the faulty product

    In some cases, you may be required to include a video or photo of the defective product for proof in order to refund or replace the product. If a return or refund is required, for this reason, the original freight and return freight shall be borne by us.

    WHEN I CAN RECEIVE MY REFUND?

    Once your return is received and inspected, we will send you an email to notify you that we have received your returned item. We will also notify you of the approval or rejection of your refund within 3-5 business days. If you are approved, then your refund will be processed, and a credit will automatically be applied to your credit card or original method of payment, within a certain amount of days.

    Your refund will deduct the original shipping cost. At the same time, you need to bear the return shipping cost, except for damaged packages.

    WHO IS RESPONSIBLE FOR THE SHIPPING COSTS?

    If the product is not usable, due to our fault (such as size, improper damage, or quality problems), we will bear the freight for replacement and rescheduling of the returned product and the return, but if you purchase the product by mistake or error, you will have to bear the freight for the original shipping and return.

    FAQ

    FAQ

    How Do I Cancel An Order?

    We are only able to cancel orders within the first 12 hours after the order is placed. After that the order has most likely been processed and is preparing for shipment or has been shipped. Once this takes effect, it's out of our hands. We apologize for any inconvenience this may cause, but we pride ourselves on prompt service and this includes getting your orders out as fast as possible.

    When Will My Order Ship?

    Orders are usually processed and shipped within 3 working days of purchase.

    How Long Does Shipping Take?

    Shipping times vary as we do ship worldwide from different fulfillment centers based on your location. Average shipping time is about 7 to 15 working days. Your tracking number will be updated 3-7 days after your order has been shipped. 

    IS MY INFORMATION SECURE USING THIS SITE?

    Yes, we use the latest technology to ensure your information is secure. To get more information, please read our privacy policy

    Orders & Payments

    Q: What payment methods do you accept?
     
    PayPal Express
    PayPal Credit
    All major Credit/Debit Cards
    A: PayPal Express is a secure and fast way to purchase our products online. PayPal already has your details, so just provide your email address and password to safely complete your online purchase.
     
    Q: How can I know if my order has been placed successfully?
     
    A: When your order is placed successfully, you will receive an order confirmation email. The status of your order can be check by visiting the Track My Order. If you have not received the order confirmation email, it may be that your email is full and cannot be successfully accepted, or it may be a system problem. Anyway, when it happens, please contact us in time.
     

    Shipping & Delivery

    Q: Where can I find the tracking information for my orders?
     
    A: All tracking numbers can be found in the shipping notification emails we send out. Tracking information can be found in the shipping notification emails we send out.
     
    Note that international shipment tracking may take up to a few days to display any updates but that doesn't necessarily mean the shipment is lost.
     
    Q: Is tracking available for my order? 
     
    A:We depend on the international network of logistics services such as DHL, FedEx, and UPS. Along with these, we also rely on local postal service providers like USPS so that your order could be delivered to you in the shortest time possible. That’s the reason why tracking may not be available sometime.
     
    Note: All orders delivered within the United States by USPS have full tracking available! For international orders, full tracking will only be available when sent via International Priority - which costs a bit more. 
     
    Q: Where do my orders ship from? 
     
    A:We have our third-party factories located in different parts of the world. Each one of them manufactures particular products and caters to different geographical locations. We make sure your orders are producted in the most suitable location catering to the delivery address you provided for fast and affordable shipping!
     
    Q: What if the recipient’s address was wrong?
     
    A:If the recipient’s address was wrong, please contact us in time. Once the order is shipped, then you are held responsible. You would have to bear the reshipment charges. 
     
    Q: What happens if a package wasn’t delivered to me, but the tracking states that it was?
     
    A:If the package was marked as delivered, but you have yet to receive it, please contact us in time.
     
    There may be cases where the delivery was made, but the package was left in an unexpected location at the your address. You should reach out to the carrier and inquire if any additional details were left by the delivery person. For example: “Left under the table on the back porch.”
     

    Returns & Exchanges

    Q: What is your return policy?
     
    A: We offer a 14-day return & exchange policy, because we would like to make you feel comfortable when shopping at Leemtybd.. Please refer to Returns & Exchanges for details.
     
    If you have any questions, please contact us, we will deal with it as soon as possible.

    Thank you for visiting

    Leemtybd focuses on discovering unique and personalized products for European and American consumers, we stick to our service and strive for 100% customer satisfaction. You can click on our classified collection album to find your favorite products
    SAFE PAYMENT
    Pay securely with your favorite Credit Card provider or PayPal!
    FREE SHIPPING
    Free Premium Shipping with Track and Trace, every order, every day!
    100% MONEY BACK
    14 day money back guaranteed. No questions asked!
    SUPPORT 24/7
    We're happy to help! We reply within 24 hours/7 days a week.
    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);