Women's Vintage Canada Independence Casual Hoodie

$30.99
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '320e8d55-5a15-4b4a-b0da-9bc539acf70f'; 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 = 'a9d2bbd4-98a5-492e-806f-76690627b811'; const variantId = this.variant_id; const productType = ''; 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 == 'a9d2bbd4-98a5-492e-806f-76690627b811' && 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 = 'a9d2bbd4-98a5-492e-806f-76690627b811'; 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() {} unmountCallback() {} setupAction_() { this.registerAction('showAddToCartToast', () => { const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy') if(themeAddToCartToastEl) return 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- Black
Size- S
Quantity
Shipping
Estimated Delivery:Mar-09 - Mar-10
Together we’re stronger, together we fight 💗🎗️

🎀🎗️ United for Every Woman

Each piece in this collection is more than just clothing — it’s a symbol of solidarity, love, and strength. 💗 By supporting women affected by breast cancer, we are helping to raise awareness, provide recovery resources, and ensure ongoing care. With every pink outfit you purchase, we proudly donate 30% of each order in your name to breast cancer prevention and treatment programs.

At Wrenoin, we believe fashion isn’t just about what you wear—it’s about what you stand for. For the past three years, we’ve come together as a community to support Breast Cancer Awareness, knowing that the impact of our collective efforts can help change lives.

Three years ago, Wrenoin made a promise: to use our platform, our brand, and our voice to support the fight against breast cancer. We were moved by the stories of the brave women who face this battle daily, and we knew that we had the power to help. So, we made a commitment: for every order placed, 30% of the proceeds would go directly to breast cancer research and support initiatives. But it’s more than just a donation—it’s part of who we are. Every piece we sell is a piece of the fight, a symbol of solidarity and hope. 💖

The Journey: Powered by Our Incredible Community

Fast forward to today, and we’re proud to celebrate our third year of partnership in this important cause. Together, with the unwavering support of our amazing community, we’ve raised $80,000 for breast cancer initiatives. Every pink item, every thoughtful gesture, every show of support—these are the steps that have allowed us to reach this milestone. 🙌

These funds represent much more than numbers—they represent the strength of a community, the resilience of individuals, and the power of hope. Thanks to you, we’ve been able to provide real support to those in need.

Standing Together: You Are Not Alone

We know the fight against breast cancer is not easy. Whether your journey is visible or quietly carried, you are not alone. Every day, countless women face challenges that many of us will never understand, yet they rise with courage and strength. At Wrenoin, we are here for you. We see you. We honor you. We stand with you. ✊

You are warriors. 💪 You are the heartbeat of this cause, and we will continue to walk beside you, showing up, fighting together, every step of the way.

 Fashion that Fights for Change

Every piece of clothing at Wrenoin is more than just fashion—it’s a movement. When you wear our designs, you are supporting a cause that’s bigger than yourself. You are helping us create change. 🌟

Thank you to every person who has supported this journey, whether through your purchase, your voice, or your advocacy. Together, we are making a difference. Together, we are more than a brand—we are a force for good. 💗

Wrenoin stands with you. Always.

Description

SPU: DZ-195276-LLQ

Fabric Name: 100% Cotton-blend

Pattern: Letter Print

Process: Printed

Style: Casual

Length: Regular

Collar: Hoodie Collar

Popular Elements: Canada Independence

Sleeve Type: Drop Shoulder Sleeve

Occasion: Daily

Theme: Spring, Fall

NOTE: If you are not sure, please choose a larger size. If you have any doubts about this product, we suggest you contact our customer service team. Due to the color difference between the screens of different electronic devices (computers, mobile phones or ipads), especially the CRT screen and the LCD screen, the color of the item may be slightly different from what you see in the photos, please take the actual product as the standard.

SizeBustLengthSleeve
cminchcminchcminch
S11042.96726.15019.5
M11645.26826.55119.9
L12247.66926.95220.3
XL12849.97027.35320.7
2XL13452.37127.75421.1
3XL14054.67228.15521.5
4XL14656.97328.55621.8
5XL15259.37428.95722.2
Due to manual measurement, there may be an error of 1-3cm

You may also like