Last chance! Sale ends in

Last chance! Sale ends in

Welcome to our store

Welcome to our store

Search

Account

Cart

牛皮凉席

Cowhide Cooling Mat Cleaning & Maintenance Guide: Extend Service Life to 50 Years Cowhide Cooling Mat Cleaning & Maintenance Guide: Extend Service Life to 50 Years
Cowhide Cooling Mat Cleaning & Maintenance Guide: Extend Service Life to 50 Years by Tawalen
How to Tell Real vs Fake Cowhide Cooling Mats: 6 Easy Identification Tips by Tawalen
Who Should Use A Cowhide Cooling Mat? Full Scenario & Crowd Adaptation Guide by Tawalen
Top 6 Unique Benefits of Genuine Water Buffalo Hide Cooling Mats | Why They Outperform All Summer Be by Tawalen
Complete Cowhide Cooling Mat Maintenance Guide: Keep It Cool & Durable For Decades by Tawalen
Who Should Use A Cowhide Cooling Mat? Full Scenario & Crowd Adaptation Guide by Tawalen
2026 Cowhide Cooling Mat Buying Guide: How To Identify Real Vs Fake by Tawalen
Why Genuine Cowhide Cooling Mats Are The Best Summer Bedding Choice by Tawalen

HELP

Wireless chargers

Power banks

Shipping

Returns and exchanges

SHOP

Wireless chargers

Power banks

This is your heading text.

ABOUT US

Wireless chargers

Power banks

This is your heading text.

JOIN US

We send great emails!

Please enter your email address.
Please enter a valid email address.
Thank you being one of us!
© 2026. Tawalen

Cart

Your cart is empty
Your cart is reserved for !

Summary

const TAG = 'spz-custom-cart-coupon-code-utils'; class SpzCustomCartCouponCodeUtils extends SPZ.BaseElement { constructor(element) { super(element); } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.keepOpenGuardBound_ = false; this.registerAction('setSideBarHeight', this.setSideBarHeight_.bind(this)); this.onResize_ = this.setSideBarHeight_.bind(this); window.addEventListener('resize', this.onResize_); } detachedCallback() { if (this.onResize_) { window.removeEventListener('resize', this.onResize_); this.onResize_ = null; } } ensureKeepOpenGuard_($sideBar) { if (this.keepOpenGuardBound_) return; this.keepOpenGuardBound_ = true; const observer = new MutationObserver(() => { if ($sideBar.hasAttribute('open') && $sideBar.hasAttribute('hidden')) { $sideBar.removeAttribute('hidden'); this.setSideBarHeight_(); } }); observer.observe($sideBar, { attributes: true, attributeFilter: ['hidden', 'open'] }); } getOpenDrawer_() { return document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setSideBarHeight_() { const $sideBar = document.querySelector('#cart-coupon-code-modal'); if (!$sideBar) return; this.ensureKeepOpenGuard_($sideBar); const windowHeight = window.innerHeight; const $drawer = this.getOpenDrawer_(); if (!$drawer) { $sideBar.style.setProperty('max-height', windowHeight * 0.9 + 'px', 'important'); $sideBar.style.removeProperty('height'); $sideBar.style.removeProperty('width'); $sideBar.classList.remove('cart-coupon-code-modal--in-drawer'); return; } const drawerHeight = (windowHeight - 40) + 'px'; $sideBar.style.setProperty('max-height', drawerHeight, 'important'); $sideBar.style.setProperty('height', drawerHeight, 'important'); $sideBar.classList.add('cart-coupon-code-modal--in-drawer'); const rect = $drawer.getBoundingClientRect(); if (rect.width > 0) { $sideBar.style.setProperty('width', rect.width + 'px', 'important'); } } } SPZ.defineElement(TAG, SpzCustomCartCouponCodeUtils); const TAG = 'spz-custom-marketing-utils'; class SpzCustomMarketingUtils extends SPZ.BaseElement { constructor(element) { super(element); } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() { this.ensureToastInBody_('coupon-code-toast-wrap'); } showCouponCodeToast_(message) { this.ensureToastInBody_('coupon-code-toast-wrap'); const toastEl = document.getElementById('coupon-code-toast'); if (!toastEl) return; SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } ensureToastInBody_(id) { const wrapEl = document.getElementById(id); if (!wrapEl) return; if (!wrapEl.closest('[data-section-type="cart_drawer"]')) return; if (wrapEl.parentNode !== document.body) { document.body.appendChild(wrapEl); } } buildCallback() { this.registerAction('addToCartTrigger', (invocation) => { window.$ && $(document).trigger('dj.common.cart.change'); window.$ && $(document).trigger('dj.addToCart', invocation.event.detail); }); this.registerAction('showAddToCartToast', () => { this.showCouponCodeToast_("Added successfully"); }); } } SPZ.defineElement(TAG, SpzCustomMarketingUtils);
Taxes and shipping calculated at checkout
Payment method

View cart