2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
1/8
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
2 In 1 Multi-functional Broom Holder
1/8

2 In 1 Multi-functional Broom Holder

$19.99
$0.00
Save $-19.99
Color
Please select a color
Quantity
Over $49.99 Free Shipping
30-day Zero-risk Return
100% Customer Satisfaction
Secure Payments
Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.

Features

  • 2 IN I BROOM HOLDER - Mop holder + hook, make it easy for you to sort out brooms, mops, rakes, umbrellas, cleaning tools, sports equipment, etc! It is adhesive and sealing power. Excellent waterproof, mildew proof and oil proof. The broom holder helps you save space, store items, keep clean and tidy, and simplify life.
  • EASY TO INSTALL WITHOUT PUNCHING- There is strong adhesive on the back of broom gripper without requirement of drilling holes for installation, Before use, clean the wall surface, stick the mop holder, press for 10 seconds to squeeze out air, and you can use the strong and durable holder after 24 hours.
  • AUTOMATICALLY ADJUSTABLE & NON-SLIP - Each clamping slot automatically adjusts the thickness of each handle and holds it safely by gravity to ensure no sliding.  Silicone grip keeps tool handles away from slipping & scratching, and no need to worry the stickers will damage the wall or ceiling. Double rubber gripped slots, holds everything snugly, guarantee nothing slips.

  • STRONG & DURABLE - Broom holder wall mount for home has good quality mop holder can bear heavy things securely. Lifting the handle, it can be easily and quickly released, Suitable for clamp different objects with 0.79-1.18 inch diameter handles.The broom holder wall mount are made of tough plastic and can withstand 11 pounds.
  • WIDELY USED - High-quality stickers have super adhesion, not easy to slip, without sticky spots. It is detachable and washable, which can be reused and suitable to apply for wood, plastic, tile, metal, ceramic, door, stainless steel surface, glass and other surfaces (except for painted, plaster, cement, paper wall). It is suitable for bathrooms, laundry rooms, kitchens, garages, gardens, basements, offices, etc.

Specifications
  • Material: ABS+TPR
  • Color: Yellow, Blue, Orange, Beige
  • Size: 11.2*4.3 cm (4.4*1.7 in)
  • Occasion: Kitchen, Living Room, Bathroom, Garden, etc.
Package Includes
  • 1* Broom Holder  

Notes

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.