Free shipping over $40
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
1 / 8
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
Multifunctional Drain Shelf (On Promotion Now)
0% OFF
Save $0.00
sasaee

Multifunctional Drain Shelf (On Promotion Now)

$14.99
0 sold
Color
Quantity
Qty


Main Features:

  • The bottom of the drain tank is hollowed out, and the hole size is uniform.
  • Strong suction sucker is firm without leaving traces. It is easy to disassemble and has a strong load-bearing capacity.
  • Neatness and tidiness can be used to store kitchen gadgets, and other small objects can be accommodated.
  • Triangle Anti-skid Pad - Placed smoothly, anti-skid.
  • Hollowed Design - Draining water quickly.

Specifications:

  • Color:Blue/Beige/Gray

  • Size: 10.23x3.93x5.59inch

  • Material: PP

    Package Include:

    • 1*Blue/Beige/Gray Kitchen multi-purpose basket

    Note:

    • Due to manual measurements, please allow slight measurement deviations.
    • Due to the different display and lighting effects, the actual color of the item may be slightly different from the color displayed on the picture.
    /** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1711005325228').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);