Free Shipping on orders over $49.99
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
1 / 30
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
Asymmetric Draped Jumper (Buy 2 Free Shipping)
You may also like Don't Like These?
50% OFF

Asymmetric Draped Jumper (Buy 2 Free Shipping)

8215 sold
$36.99 $73.98
Color
Size
Qty
/** @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 may also like Don't Like These?
Details

A Jumper As Ultra Soft As the Clouds!

The solid colour and plain style for this oversized jumper is simple but not boring.You can wear this signature style on the shoulder as an elegant cowl neck or off-the-shoulder, meet your different dressing needs.

Swing collar design, elegant to show your neck. It can be worn off the shoulders to frame your face, elongate the neck, showing elegant and charming temperament.

The long hemline design hide the belly and hips well. With the drape of the fabric, it effortlessly creates a lazy, lived-in look.

Details that Enhance Sophistication

*Soft-touch 
*Swing collar neckline
*The drape of the fabric
*Knit features open weave stitching at stretch points

Care Tip

Hand wash/Wash inside out on delicate machine wash cycle 30°C.
Wash with similar colours only. Dry flat. Store folded.

const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);