🎁Free Shipping on Orders Over $59🎉
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
1 / 14
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
Kitchen Super Absorbent Draining Mat
50% OFF
mysite

Kitchen Super Absorbent Draining Mat

$14.99 $29.99
0 sold
Style
Qty 995 in stock

  • Surface PVC material: This kitchen drain pad is durable, soft, and foldable.

Kitchen Super Absorbent Draining Mat

  • Splashproof: It can absorb water splashes and coffee, and instantly keep your countertops clean and tidy.

     

Kitchen Super Absorbent Draining Mat

  • Draining water: Help the washed tableware to drain the water, prevent mildew and bacteria, and be clean and hygienic.

Kitchen Super Absorbent Draining Mat

  • Non-slip: The anti-slip texture on the back has a strong adsorption force, and it is firmly attached to the table and is not easy to shift.

Kitchen Super Absorbent Draining Mat

  • Application: It can not only be used as a coffee pad but also widely used as a tableware drying pad for tableware and cups in kitchens, bars, and bathrooms.

SPECIFICATIONS

  • Type: Kitchen
  • Material: PVC+Rubber
  • Size: 11.81*15.74in
  • Color: dark gray, navy, coffee, latte, coffe beans

PACKAGE

  • 1 * Kitchen Super Absorbent Draining Mat
const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);