šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„
šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„

šŸ”„Last Day Promotion 49% OFF - Waterproof Shoulder BagšŸ”„

Price

$58.99 $29.99
Save $29.00
Free shipping on orders over 69.9

color

Please select a color

Quantity

Free returns
Sustainably made
Secure payments

ā¤ļøTIPS:
šŸ’ÆPayments Via PayPal® and CreditCard.
ā­Fast refund Guarantee>> Partial or full refund depend on the situation
šŸŽ‰BUY MORE SAVE MOREšŸŽ‰

šŸ”„95.9% Of Customers Are Buying 2 Or More

HOT SALE NOW:The price is limited.BUY TODAY as the promotion availablešŸ”„


You will need this Waterproof Shoulder Bag for your life!

This waterproof shoulder bag is also the best choice as a gift for family and friends

 

undefined

undefined

 

怐Large Capacity怑Shoulder bag with multiple compartments and pockets including a hidden security pocket, mobile phone pocket,big pockets with room for all your belongings. Sling backpack can effectively keep your belongings, such as cosmetics,tissues,keys, mobile phones,ipad mini,passports,water bottless,umbrellas,etc.

undefined

undefined

怐 Adjustable Sling Bag怑The flexible strap of chest bag can be adjusted varied,  The longest shoulder strap of our backpack can be adjusted to 56cm/1,8in, and the shoulder straps can be interchanged left and right.  You can freely adjust the shoulder straps according to your preferences.This crossbody backpack is perfect for men and women.

undefined

undefined

怐 Built-in Usb Interface怑This shoulder bag has a built-in usb port so you don't have to worry about wires

undefined

undefined

怐high quality fabric怑Abrasion-resistant, scratch-resistant fabricļ¼ŒWaterproof fabric, never afraid of rain or wet bag

undefinedundefined

undefined

undefined

undefinedundefinedundefinedundefinedundefinedundefined

 

undefined

Material: Oxford cloth

Specifications: 17cm*30cm*6cm

undefined

undefinedundefinedundefined

"Wanted a slim bag to carry wallet, keys and cellphone. This bag is very slim and light weighted. However, it has several compartments so I can even put in some coins and a power bank. There is also a sunglasses strip in the shoulder band. Exactly what I need. 5 star "ā­ā­ā­ā­ā­- š‘“š’š’“š’ˆš’‚š’ š‘©

"I got 2 of these, one for myself and one for my husb as a gift for our trips, he loves it. We use it almost every day wherever we go, for shopping, walking. They are super light, easy to find everything with one move. I can fit a lot in, it feels safe, not worried about losing something ever again!"ā­ā­ā­ā­ā­- Anna Y.


āš”ļøStock sells fast - get yours today!

ā¤ļøThank you very much for visiting our store. Have a nice shopping day!ā¤ļø

šŸŒŽ Worldwide Shipping āœˆ

Please do note that shipping is insured. Tracking Numbers will ALWAYS be sent so you can track them every step of the way! Cool things are worth waiting for! šŸ˜‰

/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1718252090972').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent);