🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
1/25
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System
1/25

🔥🔥🎁2024 New Year Hot Sale🎁- 49% OFF🔥🔥Disposable Toilet Cleaning System

$34.99
$69.99
Save $35.00
fragrance
Please select a fragrance
choose
Please select a choose
Quantity

FEATURES

  • 【Toilet Cleaner Kit】: This toilet brush kit includes 1 cleaning wand, 1 storage caddy, and 6 disposable sponge brush heads.

  • 【Disposable Sponges Heads】: The toilet refill heads are preloaded with toilet cleaner which will be released after soaking the brush head in water, helping you thoroughly clean the upper toilet area, around the bowl, and far into the U-bend of the toilet.

  • 【Easy to replace】: Pressing the button on the toilet handle can discard the disposable sponge head after cleaning the toilet, convenient and hygienic in use. No more worry about breeding bacteria and stink!

  • 【Toilet Bowl Brush Holder】: The storage caddy can hold the brush handle and store the refill heads. The widened base design allows easy access to items.

  • 【Convenient Bathroom Cleaner Kit】: This disposable toilet brush with holder can not only be used to clean the toilet but also can be used to clean the sink, bathroom glass, and floor stains, is a great helper for home cleaning.

SPECIFICATIONS

  • Item Type: Cleaning Tool

  • Material: Plastic

  • Color: White

  • Size: As Shown

PACKAGE

  • 1 * Disposable Toilet Cleaning System(1*Toilet brush+18PCS Brush head)

NOTE

  • Please allow slight measurement deviations due to manual measurement.

  • Due to the different monitor and light effect, the actual color of the item might be slightly different from the color showed in the pictures.

class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent);