✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
18/19
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
✨Waterproof Shoulder Bag
18/19

✨Waterproof Shoulder Bag

$29.99
$47.99
Save $18.00
3321 sold
ColorGrey
Please select a color
Quantity
/** @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-1539149753700').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);

You will need this Waterproof Shoulder Bag for your life!

undefined

FEATURES

  • 【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

  • 【 Adjustable Sling Bag】The flexible strap of chest bag can be adjusted varied,You can freely adjust the shoulder straps according to your preferences.This crossbody backpack is perfect for men and women.

undefined

  • 【 Built-in Usb Interface】This shoulder bag has a built-in usb port so you don't have to worry about wires.

undefined

  • 【 Waterproof 】Abrasion-resistant, scratch-resistant fabric,Waterproof fabric, never afraid of rain or wet bag.

undefined

SPECIFICATIONS

  • Weight: 330g

  • Material: Polyester

  • Color: Black, Blue, Grey

  • Size: 

PACKAGE

  • 1* Waterproof Shoulder Bag

NOTE

  • Orders can be canceled, returned, or exchanged  if there are problems in quality, colors, and delayed shipping.

  • 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.