Off Shoulder Ruched Top & Flare Pants Two Piece Set
people are viewing this right now
${function() {
const variantData = data.variant || {"id":"edef3c4f-48ca-4abe-afa6-83419602bad5","product_id":"ed462340-802f-49e6-bd73-539a13d71bde","title":"yellow-XS(US 4\/UK 8\/EU 36)","weight_unit":"kg","inventory_quantity":10000,"sku":"A2026072502-yellow-XS(US 4\/UK 8\/EU 36)-A0013305","barcode":"","position":1,"option1":"yellow","option2":"XS(US 4\/UK 8\/EU 36)","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/4a9f344a826fd7d46386d61fd57e3f51.png","path":"4a9f344a826fd7d46386d61fd57e3f51.png","width":418,"height":670,"alt":"","aspect_ratio":0.6238805970149254},"wholesale_price":[{"price":28.79,"min_quantity":1}],"weight":"0.5","compare_at_price":"45.99","price":"28.79","retail_price":"45.99","available":true,"url":"\/products\/off-shoulder-ruched-top-flare-pants-two-piece-set?variant=edef3c4f-48ca-4abe-afa6-83419602bad5","available_quantity":999999999,"options":[{"name":"Color","value":"yellow"},{"name":"Size","value":"XS(US 4\/UK 8\/EU 36)"}],"off_ratio":"37","flashsale_info":{"variant_id":"edef3c4f-48ca-4abe-afa6-83419602bad5","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"28.79","compare_at_price":"","discount_price":"28.79","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"37","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
const saveType = "percentage";
const productLabelDiscountOn = true;
return `
-
${saveType == 'percentage'
? `-${variantData.off_ratio}%`
: `-`
}
`;
}()}
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
${function() {
const minInventory = parseInt('10');
const maxInventory = parseInt('50');
const randomInventory = Math.round(Math.random() * (maxInventory - minInventory)) + minInventory;
const customText = "Only {stock} item(s) left in stock!".replace(/\{stock\}/g, '' + randomInventory + '');
const barWidth = (randomInventory / maxInventory) * 100 + '%';
return `
`;
}()}
Product was out of stock.
Product is unavailable.
${function(){
const variantData = data.variant || {"id":"edef3c4f-48ca-4abe-afa6-83419602bad5","product_id":"ed462340-802f-49e6-bd73-539a13d71bde","title":"yellow-XS(US 4\/UK 8\/EU 36)","weight_unit":"kg","inventory_quantity":10000,"sku":"A2026072502-yellow-XS(US 4\/UK 8\/EU 36)-A0013305","barcode":"","position":1,"option1":"yellow","option2":"XS(US 4\/UK 8\/EU 36)","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/4a9f344a826fd7d46386d61fd57e3f51.png","path":"4a9f344a826fd7d46386d61fd57e3f51.png","width":418,"height":670,"alt":"","aspect_ratio":0.6238805970149254},"wholesale_price":[{"price":28.79,"min_quantity":1}],"weight":"0.5","compare_at_price":"45.99","price":"28.79","retail_price":"45.99","available":true,"url":"\/products\/off-shoulder-ruched-top-flare-pants-two-piece-set?variant=edef3c4f-48ca-4abe-afa6-83419602bad5","available_quantity":999999999,"options":[{"name":"Color","value":"yellow"},{"name":"Size","value":"XS(US 4\/UK 8\/EU 36)"}],"off_ratio":"37","flashsale_info":{"variant_id":"edef3c4f-48ca-4abe-afa6-83419602bad5","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"28.79","compare_at_price":"","discount_price":"28.79","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"37","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
return `
Weight : ${variantData && variantData.weight}${variantData && variantData.weight_unit}
Barcode : ${variantData && variantData.barcode}
`
}()}
| SPU: |
A2026072502 |
| Material: |
Blended |
| Style: |
Leisure |
| Size: |
XS/S/M/L/XL/2XL/3XL |
Tops Size:
| Size |
Length |
Bust |
Sleeve Length |
| CM |
inch |
CM |
inch |
CM |
inch |
| XS |
55 |
22.0 |
88 |
35.2 |
40 |
15.7 |
| S |
56 |
22.0 |
92 |
36.2 |
41 |
16.1 |
| M |
57 |
22.4 |
96 |
37.8 |
42 |
16.5 |
| L |
58 |
22.8 |
100 |
39.4 |
43 |
16.9 |
| XL |
59 |
23.2 |
104 |
40.9 |
44 |
17.3 |
| 2XL |
60 |
23.6 |
108 |
42.5 |
45 |
17.7 |
| 3XL |
61 |
24.0 |
112 |
44.1 |
46 |
18.1 |
/** @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-1779181026469').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);
${data.module_title}
To display this card to customers, you need to go to "Booster & Store Conversion" to turn on the trust enhancement feature.
${item.content.replaceAll("{store_name}","Tymviajeros")}
To display this card to customers, you need to go to "Booster & Store Conversion" to turn on the trust enhancement feature.
Your shopping bag is empty
-
*${item.quantity}
${item.item_text}
${discount_item.title}
(-)
${ data.originData.message }
${function () {
if (!data.originData) return "";
let {
apply_scenario,
discount_info,
landing_page_info,
threshold_category
} = data.originData;
const progressDom = ``;
const { mobile_layout, show_add_to_cart, show_discount_label } = landing_page_info.product_display;
const isBXGY = discount_info.discount_type === "DT_CODE_BXGY";
const buyProductsDom = `
`;
const obtainProductsDom = `
`;
const is_obtain = threshold_category === 'THRESHOLD_CATEGORY_OBTAIN_PRODUCT' ? 'active' : '';
const tabsDom = `
${function(){
let liDom = '';
const items = [
{
text: landing_page_info.product.buy_product.text,
class: "",
value: 1
},
{
text: landing_page_info.product.obtain_product.text,
class: "cart-coupon-code-modal-tab__obtain",
value: 2,
is_obtain
}
];
for (item of items) {
liDom += `
- ${ item.text }
`
}
return liDom;
}()}
${buyProductsDom}
${obtainProductsDom}
`;
return `
${progressDom}
${isBXGY ? tabsDom : `
${buyProductsDom}
`}
`
}()}
const TAG = 'spz-custom-cart-coupon-code-utils';
class SpzCustomCartCouponCodeUtils extends SPZ.BaseElement {
constructor(element) {
super(element);
}
static deferredMount() {
return false;
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
buildCallback() {
this.action_ = SPZServices.actionServiceForDoc(this.element);
this.registerAction('setSideBarHeight', this.setSideBarHeight_.bind(this));
window.addEventListener('resize', this.setSideBarHeight_.bind(this));
}
setSideBarHeight_() {
const $sideBar = document.querySelector('#cart-coupon-code-modal');
if (!$sideBar) return;
const windowHeight = window.innerHeight;
$sideBar.style.setProperty('max-height', windowHeight * 0.9 + 'px', 'important');
}
}
SPZ.defineElement(TAG, SpzCustomCartCouponCodeUtils);
${function(){
const settings_product_image_hover_on = true;
const variantShowLimit = 4;
const private_id = 'product-tmpl-' + Math.random().toFixed(6).slice(-6);
const product_variants = data.variants || [];
const product_id = data.id;
const images = data.images || [];
const image = data.image || {};
const imageWidth = image.width;
let imageHeight = image.height;
const price = Number(data.price_min);
let compareAtPrice = Number(data.compare_at_price);
const type = data.type;
const isMock = data.isMock;
let product_image_hover_on = false;
for (item of product_variants) {
const vcap = Number(item.compare_at_price);
if (item.price == price && vcap > compareAtPrice) {
compareAtPrice = vcap;
}
}
let second_image = null;
if (settings_product_image_hover_on) {
for (img of images.slice(1)) {
if (img.src && img.src.indexOf('video=') === -1) {
second_image = img;
product_image_hover_on = true;
break;
}
}
}
const sold_label_on = !data.available;
let sale_label_on = false;
if (compareAtPrice > price && data.available) {
sale_label_on = true;
}
const diffPrice = compareAtPrice - price;
return `
${data.available ?
`
` : ''}
`;
}()}
const carousel = document.getElementById('marketing-quick-view-images');
const selector = document.getElementById('marketing-quick-view-thumb-images');
const resizeObserver = new ResizeObserver(entries => {
for (let entry of entries) {
const { height } = entry.contentRect;
selector.style.height = height + 'px';
}
});
resizeObserver.observe(carousel);
${function(){
const variantsNamesSet = new Set(data.options.map((opt) => opt.name.toLowerCase()) || []);
const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, '');
const mouseoutevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseout="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' ');
const mouseoverevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseover="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' ');
const variants = data?.variants?.map((item) => item.image.path) || [];
const productData = data;
const images = data.images;
const selectedVariant = data.variants.find(v => v.available) || data.variants[0];
const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0;
const initialSlide = selectedIndex === -1 ? 0 : selectedIndex;
return `
${images.map((image, index) => `
`).join('')}
${images.map(image => `
`).join('')}
${images.length > 1 ? `
` : ''}
`
}()}
${function(){
return (data.product.options || []).map((option, index) => {
const optionName = option.name || '';
const optionId = option.id || '';
return `
`
}).join('')
}()}
${function(){
const { currentOptName, originData: { selectData, value } } = data;
const optionValue = selectData ? selectData[currentOptName].value[0] : value;
return `${optionValue}`
}()}
${function(){
const productData = data.product;
const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0];
const product_options = productData.options.filter(Boolean) || [];
const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, '');
const mouseoutevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseout="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' ');
const mouseoverevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseover="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' ');
return `
` }()}
${function(){
return (data.product.options || []).map((option, index) => {
const optionName = option.name || '';
const optionId = option.id || '';
return `
`
}).join('')
}()}
${function(){
const { currentOptName, originData: { selectData, value } } = data;
const optionValue = selectData ? selectData[currentOptName].value[0] : value;
return `${optionValue}`
}()}
const TAG = 'spz-custom-marketing-utils';
class SpzCustomMarketingUtils extends SPZ.BaseElement {
constructor(element) {
super(element);
}
static deferredMount() {
return false;
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
buildCallback() {
this.registerAction('addToCartTrigger', (invocation) => {
window.$ && $(document).trigger('dj.common.cart.change');
window.$ && $(document).trigger('dj.addToCart', invocation.event.detail);
})
}
}
SPZ.defineElement(TAG, SpzCustomMarketingUtils);
${function(){
if (data.status === 'APPLY_STATUS_SUCCESS' || !data.message) {
return ``
}
return `
${data.originData.message}
Add
`
}()}
${data.map( item => {
return `
`
}).join('')}
${data.map( item => {
return `
`
}).join('')}
${function(){
const code_data = data.originData.list;
if (!code_data || !code_data.length) return '';
const recommendDom = `
Recommend discount codes
`;
const discountCodeListDom = code_data.map( item => {
item.end_at = item.end_at == -1 ? item.end_at : item.end_at * 1000;
item.start_at *= 1000;
return `
`
}).join('');
return `
${discountCodeListDom}
`
}()}
${function() {
const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
if (textArray.length > 0 && textArray.length < 2) {
textArray.push('');
}
return textArray.map((text, index) => {
if (index == 0) {
return `${text}`;
}
return `
${text}
`;
}).join('');
}()}
${function() {
const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
if (textArray.length > 0 && textArray.length < 2) {
textArray.push('');
}
return textArray.map((text, index) => {
if (index == 0) {
return `${text}`;
}
return `
${text}
`;
}).join('');
}()}
-
${discount_application.title}:
-
${data.invalid_msg}
Taxes and shipping calculated at checkout
${data.invalid_msg}
${function() {
const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
if (textArray.length > 0 && textArray.length < 2) {
textArray.push('');
}
return textArray.map((text, index) => {
if (index == 0) {
return `${text}`;
}
return `
${text}
`;
}).join('');
}()}
${function() {
const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
if (textArray.length > 0 && textArray.length < 2) {
textArray.push('');
}
return textArray.map((text, index) => {
if (index == 0) {
return `${text}`;
}
return `
${text}
`;
}).join('');
}()}
${function() {
const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
if (textArray.length > 0 && textArray.length < 2) {
textArray.push('');
}
return textArray.map((text, index) => {
if (index == 0) {
return `${text}`;
}
return `
${text}
`;
}).join('');
}()}
-
${discount_application.title}:
-
${data.invalid_msg}
Taxes and shipping calculated at checkout
-
Subtotal:
-
${discount_application.title}:
-
Taxes and shipping calculated at checkout