LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker
LTGEM Portable Travel Case for Bose SoundLink Flex Speaker

LTGEM Portable Travel Case for Bose SoundLink Flex Speaker

$13.99
$0.00
-$-13.99
color-color1
Please select a color
Quantity
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Product was out of stock.
Vendor by: LTGEM
SKU: CS968

PERFECT FIT: We've specifically designed the case to fit your Bose SoundLink Flex Bluetooth Portable Speaker. OUTER DIMENSIONS:8.5" L – 4.4" W – 3.5" H. SAFETY : Bose Soundlink Flex case made of premium hard EVA and durable velvet materials,offers double protection against scratches, dents, bumps, and drops. Holding belt make the Speaker fixed in the case. EASY TO CARRY : Bose Soundlink Flex case features a strong rubber Handle and with steady detachable shoulder strap that allows for easy portability on the go.You can put it in bag and take anywhere. CONVENIENT DESIGN: Bose Soundlink Flex case Inner mesh pocket design perfectly for accessories, Smooth but strong 360 degree zipper for easy Opening and Closing. For SALE: One Case Only! ( The Bose Soundlink Flex Speaker is not included ).

From our customers

Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
Add customer reviews and testimonials to showcase your store’s happy customers.
Author's name
Los Angeles, CA
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.