Hard Shell Bike Pannier

$49.00
Quantity
Description

Fashion Pannier Bags for Bicycles Rear Rack ! ! !

Large Capacity:

With 8.6L large capacity, this bike rack bag features a main compartment with 3 inner mesh pocket and elastic cords. Great for carrying cycling coat, repair tools, tire pump, power bank, water bottle, groceries, snacks, food, drinks, etc (15 x 6.3 x 6.3 Inch)(L x W x H)

Never Fear The Bad Weather:

Solid and durable 600D Oxford fabric, design with fully waterproof double zipper, effectively prevent rainwater from entering the bag, protecting all of your belongings well and keep them dry and safe. NOTE: Rain cover in included

Reflective Design:

The back of the bike rack bag has a large reflective webbing that not only increases your visibility, but also ensures your safety when riding at night, the hanger on the strip can also hold a taillight

Adjustable Straps:

This waterproof bike bag is equipped with adjustable straps for easy installation and detachment in a few seconds, which is stable and will not slip off

Fits All Types Bike Rack:

Mounting on the bike rack storage with 3 adjustable velcro straps, Fits Most of the Bike Racks Completely of this bike rear rack bag. The reflective webbing and LOGO design of this bike saddle bag for increasing visibility and safety at night, so it will be safe during night riding

This bicycle bag is the perfect choice for work or school and daily non-bicycle use ! ! !

Stylish Lightweight Compact Portable Rear Rack Bag ! ! !

Easy To Carry:

When you take it off the bike, you can carry it on your shoulder or carry it in your hand. So you can take him anywhere and don't worry it will be lost

Water Bottle Holder Pocket:

Kettle bag pocket is designed with elastic band, suitable for different water bottles or umbrellas (up to largest diameter 2.5 inch)

Elastic Bungee Cord:

Elastic bungee cord on the top to keep your clothes or maps securely on the bag

Easy To Clean:

Unlike other bike bags, the ease that you have with [ Extrbici Bike Rack Bag] to simply wipe it down clean. The face of bag is glossy and its material is very resistant to dirt.

This bicycle trunk bag is specially designed for outdoor sports enthusiasts ! ! !

Cycling Back Seat Cargo Carrier Pouch with Shoulder Strap ! ! !

Bike Rack Bag Seat Cargo Bag Rear Pack Trunk Pannier Handbag ! ! !

Specifications:

1.Material: 600D Oxford fabric + PU + EVA

2.Size: 15 x 6.7 x 6.7inch (L x W x H)

3.Color: Black

4.Suitable For: Bike Rear Seat

5.Weight: 580g

6.Package Included:

1x Bike Trunk Bag; 1x Rain Cover; 1x Shoulder Bag Strip

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.