KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
6/9
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
KITCHEN SINK DRAIN BASKET SWAN
6/9

KITCHEN SINK DRAIN BASKET SWAN

$22.99
$0.00
Save $-22.99
2674 sold
Color:
Please select a color:
🔥92.8% OF CUSTOMERS BUY 2 OR MORE
Please select a 🔥92.8% of customers buy 2 or more
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);

No need to install, hung directly at the bottom of the faucet, swan-shaped hook design, suitable for all kinds of sinks.

Multiple functions, can filter leftovers in the kitchen, can be used as a fruit drain basket, can be used as a sponge brush drain rack.

undefined

[Safety material]The water tank basket is made of good material, so there is no need to worry about harmful substances.
undefined
[Unique design]The triangular swan shape design makes full use of the space in the corner of the sink and does not occupy the extra space inside the sink. Lively and cute appearance, quick discharge of pores, not easy to clog.

undefined
[Good stability]The long hook of the water tank filter is suitable for most water tanks. Apply a triangular structure to increase stability. Don't worry about falling, sagging or loosening. Let you rest assured to use.
undefined

undefined

[Multi-function] The drain basket can be placed in the sink for filtering residues, washing fruits, etc. The drain basket has a wide range of uses and is very convenient to keep the sink countertop clean and tidy.