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

Frequently Asked QuestionsShipping PolicyReturns & Exchanges
.....

SHOP

Wooden Door HandlesStone Door HandlesMetal Door Handles

ABOUT US

Our StoryContact Us
...

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