Women's Wireless Bra Comfort Bralettes No Underwire Unlined Cami Bra Seamless Tshirt Bras Sports Bra Bralette Basic Comfortable Fit Womenswear Everyday Up to 44DD Mother’s Day #Summervibes

$18.99
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'ada5b74b-1301-46cc-b625-3952332884c0'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = '60994bb0-da0a-4178-9eaa-094b86867f50'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '60994bb0-da0a-4178-9eaa-094b86867f50' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = '60994bb0-da0a-4178-9eaa-094b86867f50'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() { // 同一页可能有多个 block 各自渲染本 snippet,导致逻辑元素 spz-custom-discount-toast(#appsAddCartToastFunc) 重复。 // 仅保留 DOM 中第一个实例,其余重复实例移除自身,保证逻辑元素及其 action 引用(appsAddCartToastFunc)唯一。 const funcs = document.querySelectorAll('#appsAddCartToastFunc'); if (funcs.length > 1 && this.element !== funcs[0]) { this.element.remove(); return; } // 全局折扣 toast 的弹出点分散在多个模板/组件里(含声明式 @atcError),无法逐一在弹出前前置, // 故挂载时幂等地去重并挂到 body;加购 toast 改为弹出前按需去重(见 showAddToCartToast) this.ensureSingleToastInBody_('cart_match_discount_toast_wrap'); } unmountCallback() {} // 同一页面可能有多个 block 各自渲染本 toast snippet(如商详的 discount_automatic + 购物车抽屉里的折扣横幅), // 导致 toast 外层出现重复 id。重复 id 下 getElementById/querySelector 及 SPZ 动作引用都只命中第一个, // 且被关进抽屉的那份会被抽屉的 transform/overflow 裁剪/错位。这里在挂载时幂等去重: // 只保留一份、移除多余的,并把保留的挂到 body(body 是 position:fixed 最安全的落点,避免被任何祖先裁剪)。可反复调用。 ensureSingleToastInBody_(id) { const els = Array.from(document.querySelectorAll('#' + id)); if (!els.length) return; els.slice(1).forEach((el) => el.remove()); const keep = els[0]; if (keep.parentNode !== document.body) { document.body.appendChild(keep); } } // 主题购物车抽屉是否打开 isInCartDrawer_() { return !!document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setupAction_() { this.registerAction('showAddToCartToast', () => { // 抽屉内加购:主题本就不会有加购效果,统一弹插件自己的 toast // 非抽屉:主题有加购代理则沿用主题加购效果,否则插件兜底 const proxyEl = document.getElementById('add-cart-event-proxy'); const inDrawer = this.isInCartDrawer_(); if (!inDrawer && proxyEl) { return; } // 弹出前按需去重并挂到 body(幂等),避免重复 id 命中错对象或被抽屉裁剪/错位 this.ensureSingleToastInBody_('apps_add_cart_toast_wrap'); const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
Color:  Brown
Size:  S
Quantity

Description

💕 Women’s Wireless Comfort Bralette

No Underwire · Unlined Cami Bra · Seamless T-Shirt Bra · Everyday & Light Workout Comfort

Enjoy soft support without wires, padding, or uncomfortable pressure. This wireless comfort bralette is designed with smooth stretch fabric, wide straps, and a secure underband to give you an easy everyday fit for lounging, layering, light workouts, yoga, and daily wear.

✨ Soft Support Without Wires

Traditional bras can sometimes feel tight, stiff, or restrictive, especially during long days, relaxed weekends, or light activities. This wireless bralette is made for women who want a softer, easier fit without sacrificing everyday support.

The smooth fabric moves with your body, helping you feel comfortable whether you are working from home, going out, stretching, traveling, or simply relaxing.

✨ Key Features ✨

✅ Wire-free design for all-day comfort

✅ Soft stretchy fabric moves with your body

✅ Unlined design for a lightweight natural feel

✅ Subtle center ruching helps enhance natural shape

✅ Wide straps help reduce shoulder pressure

✅ Secure underband keeps the bra comfortably in place

☁️ Wire-Free Comfort

No wires, no digging, and no stiff pressure. This bra is designed with soft stretch fabric that gently hugs your body while allowing natural movement.

It is a comfortable choice for daily wear, lounging, sleeping, yoga, light workouts, and casual outfits.

🌸 Natural Lift & Shape

The subtle center ruching helps enhance your natural shape while creating a softly defined silhouette. It offers gentle lift without bulky padding or traditional underwire.

Perfect for women who want a simple, feminine, and natural-looking fit under everyday clothing.

👚 Seamless Everyday Fit

The smooth bralette style works well under T-shirts, sweaters, lounge sets, casual tops, and light activewear. Its clean design helps reduce visible lines for a softer, more natural look.

💪 Stay-Put Support

Wide straps and a secure underband help keep the bra in place as you move. Whether you are stretching, bending, walking, or handling a busy day, this bra is designed to feel stable and comfortable.

⭐ Why You’ll Love It

✅ Comfortable enough for all-day wear

✅ Wireless design avoids underwire pressure

✅ Lightweight unlined cups feel breathable and natural

✅ Wide straps help improve shoulder comfort

✅ Smooth style layers easily under everyday outfits

✅ Great for lounging, yoga, light workouts, and casual wear

🌷 Perfect For Everyday Comfort

This wireless bralette is designed for real daily life. Wear it when you want soft support, easy movement, and a relaxed fit without heavy structure.

🏠 Lounging at home

🧘 Yoga and stretching

🚶 Light workouts and walking

👚 T-shirts and casual tops

🌙 Relaxing and sleepwear

✈️ Travel and long-day wear

📏 Fit Notes

✅ Designed for wireless comfort and gentle support.

✅ Unlined style gives a lightweight, natural feel.

✅ Wide straps and underband help provide a secure everyday fit.

✅ Please check the size chart carefully before ordering.

✅ Actual fit and support may vary depending on body shape and size selection.

✨ How To Wear

```

1️⃣ Choose Your Size

Check your bust and underbust measurements, then choose according to the size chart.

2️⃣ Adjust The Bust Area

Make sure the cups sit smoothly and comfortably over the bust.

3️⃣ Check The Underband

The underband should feel secure but not overly tight.

4️⃣ Wear Your Way

Pair it with T-shirts, lounge sets, yoga outfits, sweaters, sleepwear, or everyday casual looks.

```

🧺 Care Instructions

✅ Hand wash recommended to help maintain softness and elasticity.

✅ Wash with similar colors.

✅ Do not bleach.

✅ Air dry naturally.

✅ Avoid high heat drying to protect fabric stretch.

⚠️ Notes

✅ Please check the size chart before placing your order.

✅ For best comfort, avoid choosing a size that feels overly tight.

✅ Color may vary slightly due to lighting and screen differences.

✅ Please allow slight measurement differences due to manual measurement.

💕 Move Freely, Feel Comfortable All Day

A soft wireless bralette designed for natural shape, everyday ease, and light support without underwire.

👇 Add to cart today and enjoy effortless comfort!

Why Shop With Us

📦 Worldwide Shipping: Tracking information will be provided once your order ships.

💰 After-Sales Support: If your item arrives damaged or defective, please contact us for assistance.

✉️ Customer Support: Our support team will help answer your order questions.

🔒 Secure Checkout: Your personal and payment information is protected during checkout.

⭐ Thank You For Shopping With Us ⭐

Click “Add to Cart” or “Buy Now” to get yours today!