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)
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)

Multifunctional Drain Shelf (On Promotion Now)

Price

$14.99 $14.99
Save $0.00
In stock

color

Please select a color

quantity

Please select a quantity

Quantity

/** @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-1539149753700').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);


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.