Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag
Retro Large Capacity Versatile Canvas Tote Bag

Retro Large Capacity Versatile Canvas Tote Bag

Color
Please select a color
Size
Please select a size
2 sold
Price
$0.00
$26.69
Save  0%
Quantity
Free shipping on order $79
Fast delivery
Sustainably made
Secure payments
SKU: xtjx52023082214-23-i
/** @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);

SKU:xtjx52023082214

DESCRIPTION

Texture: Cotton

Closing Method: Zipper

Pattern: Plain

Style: Retro Style

Shape: Horizontal Square

Condition: New

Popular Elements: Color Contrast

Color Classification: Dark Blue Coffee

Internal Structure: Zipper Pocket

With Or Without Interlayer: No

Whether It Is Foldable: Yes

Applicable Scene: Leisure

Lining Material: Cotton

Shoulder Strap Style: Double Root

Lifting Part Type: Soft Handle

Luggage Hardness: Hard

Style: Handbag

Size: Large Room For Computer

Size: 16 Inches