Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter
Adjustable Shower Faucet Angle Adapter

Adjustable Shower Faucet Angle Adapter

Price
$0.00
$24.90
Save  0%
Qty
Please select a qty
Quantity
Worldwide shipping
Free returns
24/7 customer support
Secure payments

KEY FEATURES

EFFECTIVE SOLUTION FOR MISALIGNED PIPES – Specially designed to address uneven wall drilling and misaligned water pipe connections, ideal for concealed hot and cold faucets.

360° ROTATABLE WITH ADJUSTABLE ANGLES – Offers complete flexibility with 360° rotation and an adjustable angle range of 0-40°, allowing for precise control over your showerhead’s direction.

UNIVERSAL FIT (1/2" & 2/3" NPT) – Compatible with both 1/2" and 2/3" NPT connections, making it a versatile choice for a wide range of shower setups.

PREMIUM 304 STAINLESS STEEL CONSTRUCTION – Crafted from high-quality, thickened 304 stainless steel for added durability, strength, and a long-lasting, rust-resistant finish.

EASY INSTALLATION – Simple to install with no special tools required. Perfect for DIY projects and upgrading your shower setup without the need for a plumber.

SPEC

Material: Stainless Steel

Color: Silver

Size: As Shown in the Picture

Adjustable Angle: 360° rotation with 0-40° angle adjustment

Package Includes: 2 PCS * Angle Adapters

NOTES

Color may not appear as exactly as in real life due to variations between the computer monitors.

Please allow a small error due to manual measurement. Please make sure you do not mind before purchasing.

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.