Free shipping worldwide over $50
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
1 / 16
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
Wall Mounted Manual Soap Dispenser
19% OFF
phonacce

Wall Mounted Manual Soap Dispenser

$22.90 $28.26
0 sold
Color
Quantity
Qty

DO YOU HAVE THESE PROBLEMS?

?Wall Mounted Manual Soap Dispenser
?Convenient storage, neat and clean
 

FEATURES

  •  ★★UNIQUE DESIGN - Luxury soap dispenser, durable and elegant. Transparent Soap Dispenser body, easy to see how much liquid left. With separated outlet liquid nozzle, Avoid Leaking & Waste.

  • WIDE OPENING - Makes refills fast, easy, and spill-free.

  • ★★ELIMINATE BOTTLE CLUTTER - 450ml Wall Mounted Soap dispenser. Fill wall mount pumps with shampoo, conditioner or body wash. Eliminate shower bottle clutter and say goodbye to messy lotion bottles.

  • ★★EASY TO INSTALL - Installs easily with double-sided tape.

  • ★★EASY TO CLEAN - Dispenser lifts off wall plate for easy cleaning or refill. WIDE OPENING - Makes refills fast, easy, and spill-free.

SPECIFICATIONS

  • Material: ABS+PP

  • Weight: 500g

  • Color: White, Dark Green

  • Size:  22*6.5cm/8.66*2.55in

PACKAGE

  • 1 * Wall Mounted Manual Soap Dispenser

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.

You May Also Like Don't Like These?

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.