Hitting My Marks Sweater
$65.99
$99.99
Save $34.00
${saveText.replace('{off_ratio}',
saveType == 'percent'
? data.off_ratio + '%'
: ` `
)}
`;
}()}
The current produc does not participate any Rebate. Switch the participating product to check the design.
(This prompt will not be displayed on the client-side.)
(This prompt will not be displayed on the client-side.)
${function() {
const show = rebate.format_rules.length > data.maxShowCount;
return `
${rule}
${function() {
if(!show) return "";
return `
`;
}()}
`;
}()}
${originData.rebate.format_rules.join(", ")}
class SpzCustomFileUpload extends SPZ.BaseElement {
constructor(element) {
super(element);
this.uploadCount_ = 0;
this.fileList_ = [];
}
buildCallback() {
this.action = SPZServices.actionServiceForDoc(this.element);
this.registerAction('upload', (data) => {
this.handleFileUpload_(data.event?.detail?.data || []);
});
this.registerAction('delete', (data) => {
this.handleFileDelete_(data?.args?.data);
});
this.registerAction('preview', (data) => {
this.handleFilePreview_(data?.args?.data);
});
this.registerAction('limit', (data) => {
this.handleFileLimit_();
});
this.registerAction('sizeLimit', (data) => {
this.handleFileSizeLimit_();
});
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
setData_(count, file) {
this.uploadCount_ = count;
this.fileList_ = file;
}
handleFileUpload_(data) {
data.forEach(i => {
if(this.fileList_.some(j => j.url === i.url)) return;
this.fileList_.push(i);
})
this.uploadCount_++;
sessionStorage.setItem('fileList', JSON.stringify(this.fileList_));
this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_});
if(this.fileList_.length >= 5){
document.querySelector('#review_upload').style.display = 'none';
}
if(this.fileList_.length > 0){
document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px';
}
}
handleFileDelete_(index) {
this.fileList_.splice(index, 1);
this.uploadCount_--;
sessionStorage.setItem('fileList', JSON.stringify(this.fileList_));
this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_});
document.querySelector('#review_upload').style.display = 'block';
if(this.fileList_?.length === 0){
document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px';
}
}
handleFilePreview_(index) {
const finalPreviewData = this.fileList_[index];
const filePreviewModal = document.getElementById('filePreviewModal');
const fullScreenVideo = document.getElementById('fullScreenVideo');
const fullScreenImage = document.getElementById('fullScreenImage');
const previewModalClose = document.getElementById('previewModalClose');
const previewLoading = document.getElementById('previewLoading');
filePreviewModal.style.display = 'block';
previewLoading.style.display = 'flex';
if(finalPreviewData?.type === 'video'){
const media = this.mediaParse_(this.fileList_[index]?.url);
fullScreenVideo.addEventListener('canplaythrough', function() {
previewLoading.style.display = 'none';
});
fullScreenImage.src = '';
fullScreenImage.style.display = 'none';
fullScreenVideo.style.display = 'block';
fullScreenVideo.src = media.mp4 || '';
} else {
fullScreenImage.onload = function() {
previewLoading.style.display = 'none';
};
fullScreenVideo.src = '';
fullScreenVideo.style.display = 'none';
fullScreenImage.style.display = 'block';
fullScreenImage.src = finalPreviewData.url;
}
previewModalClose.addEventListener('click', function() {
filePreviewModal.style.display = 'none';
});
}
handleFileLimit_() {
alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5');
this.triggerEvent_("handleFileLimit");
}
handleFileSizeLimit_() {
alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M');
}
clear(){
this.fileList_ = [];
this.uploadCount_ = 0;
sessionStorage.setItem('fileList', JSON.stringify(this.fileList_));
this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_});
document.querySelector('#review_upload').style.display = 'block';
}
mediaParse_(url) {
var result = {};
try {
url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) {
try {
result[key] = decodeURIComponent(value);
} catch (e) {
result[key] = value;
}
});
result.preview_image = url.split('?')[0];
} catch (e) {};
return result;
}
triggerEvent_(name, data) {
const event = SPZUtils.Event.create(this.win, name, data);
this.action.trigger(this.element, name, event);
}
}
SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
Color:
White
${data.targetOption}
Size:
One Size
${data.targetOption}
Quantity
Share the love
Free Shipping Over $69.99
45 Days Free Returns
Wholesale & Retail
Secure Payments
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
${function(){
const limit = typeof data === 'number' ? data : 0;
return `
Pictures/Videos (${limit || 0}/5)
` }()}
${(function(){
const closeIcon =
'';
if (item.type === 'image') {
return `
${closeIcon}
`
}
return `
${closeIcon}
`
})()}
The review would not show in product details on storefront since it does not support to.
Description
Experience effortless style with our Hitting My Marks Sweater! Its regular length and soft, polyester material make it both comfortable and fashionable. The v-neck design is accented with a feminine bow, adding a touch of charm to this solid patterned sweater. Elevate your wardrobe with this must-have piece!
Details
Clothing Length: Regular
Material: Polyester
Collar: V-Neck
Decoration: Bow
Pattern Type: Solid
Fit Type: Loose
Sleeve Length: Full
Thickness: Thick
Size Chart
ONE SIZE
Bust 112cm
Length 66cm
Sleeve 68.5cm
You may also like
${function() {
const force_image_size = "1";
const product_hover_on = true;
const product_show_sale_label = true;
const product_save_type = "amount";
const badge1 = "New";
const badge2 = "";
const badge3 = "";
const product_title_mobile_hide = false;
const product_title_style = "hide";
const enable_collection_thumb_image = true;
const variantNames = ["color","size","style"];
const thumbMaxNum = 4;
const suffix_id = "-product-recommendations-pc" || '';
const url = data.url;
const productId = data.id;
const price = data.price;
const productAvailable = data.available;
const productVariants = data.variants || [];
const images = data.images || [];
const image = data.image || {};
const imageWidth = image.width;
let imageHeight = image.height;
let image2 = null;
let imageHoverOn = false;
if (force_image_size !== 'natural') {
imageHeight = imageWidth * force_image_size;
}
if (product_hover_on) {
for (let i = 1; i < images.length; i++) {
const img = images[i];
if (img.src && img.src.indexOf('video=') === -1) {
image2 = img;
imageHoverOn = true;
break;
}
}
}
let compareAtPrice = data.compare_at_price;
let offRatio = data.off_ratio;
let discountMaxUrl = url;
const showFrom = data.price_min != data.price_max ? true : false;
for (let i = 0; i < productVariants.length; i++) {
const variant = productVariants[i];
if (variant.price == price && compareAtPrice < variant.compare_at_price) {
compareAtPrice = variant.compare_at_price;
offRatio = variant.off_ratio;
variant.available && (discountMaxUrl = variant.url);
}
}
const soldOutText = "Sold out";
let soldOn = false;
let saleOn = false;
if (productAvailable) {
if (product_show_sale_label && price < compareAtPrice) {
saleOn = true;
}
} else {
soldOn = true;
}
const diffPrice = compareAtPrice - price;
const saveLabelContent = product_save_type == 'percent' ? (offRatio + '%') : ` `;
let saveText = "Save {off_ratio}";
saveText = saveText.replace('{off_ratio}', saveLabelContent);
const productTitle = data.title;
const heading = "title" === 'subtitle' ? data.brief : productTitle;
const variantValues = [];
const showVariants = [];
if (data.need_variant_image && enable_collection_thumb_image && variantNames.length > 0) {
for (let i = 0; i < (data.options || []).length; i++) {
const option = data.options[i];
const optionName = option.name.toLowerCase();
if (variantNames.includes(optionName)) {
for (let j = 0; j < productVariants.length; j++) {
const variant = productVariants[j];
const value = variant.options[i].value;
if (!variantValues.includes(value)) {
variantValues.push(value);
showVariants.push(variant);
}
}
break;
}
}
}
return `
${saveText}
${showVariants.map((item, idx) => {
let showMoreHtml = '';
if (idx == thumbMaxNum) {
showMoreHtml += `
`;
}
return `
${showMoreHtml}
`;
}).join('')
}
`;
}()}
`).join('')}
${heading}
FromRecently viewed
${function() {
const force_image_size = "1";
const product_hover_on = true;
const product_show_sale_label = true;
const product_save_type = "amount";
const badge1 = "New";
const badge2 = "";
const badge3 = "";
const product_title_mobile_hide = false;
const product_title_style = "hide";
const enable_collection_thumb_image = true;
const variantNames = ["color","size","style"];
const thumbMaxNum = 4;
const suffix_id = "-recently-view-pc" || '';
const url = data.url;
const productId = data.id;
const price = data.price;
const productAvailable = data.available;
const productVariants = data.variants || [];
const images = data.images || [];
const image = data.image || {};
const imageWidth = image.width;
let imageHeight = image.height;
let image2 = null;
let imageHoverOn = false;
if (force_image_size !== 'natural') {
imageHeight = imageWidth * force_image_size;
}
if (product_hover_on) {
for (let i = 1; i < images.length; i++) {
const img = images[i];
if (img.src && img.src.indexOf('video=') === -1) {
image2 = img;
imageHoverOn = true;
break;
}
}
}
let compareAtPrice = data.compare_at_price;
let offRatio = data.off_ratio;
let discountMaxUrl = url;
const showFrom = data.price_min != data.price_max ? true : false;
for (let i = 0; i < productVariants.length; i++) {
const variant = productVariants[i];
if (variant.price == price && compareAtPrice < variant.compare_at_price) {
compareAtPrice = variant.compare_at_price;
offRatio = variant.off_ratio;
variant.available && (discountMaxUrl = variant.url);
}
}
const soldOutText = "Sold out";
let soldOn = false;
let saleOn = false;
if (productAvailable) {
if (product_show_sale_label && price < compareAtPrice) {
saleOn = true;
}
} else {
soldOn = true;
}
const diffPrice = compareAtPrice - price;
const saveLabelContent = product_save_type == 'percent' ? (offRatio + '%') : ` `;
let saveText = "Save {off_ratio}";
saveText = saveText.replace('{off_ratio}', saveLabelContent);
const productTitle = data.title;
const heading = "title" === 'subtitle' ? data.brief : productTitle;
const variantValues = [];
const showVariants = [];
if (data.need_variant_image && enable_collection_thumb_image && variantNames.length > 0) {
for (let i = 0; i < (data.options || []).length; i++) {
const option = data.options[i];
const optionName = option.name.toLowerCase();
if (variantNames.includes(optionName)) {
for (let j = 0; j < productVariants.length; j++) {
const variant = productVariants[j];
const value = variant.options[i].value;
if (!variantValues.includes(value)) {
variantValues.push(value);
showVariants.push(variant);
}
}
break;
}
}
}
return `
${saveText}
${showVariants.map((item, idx) => {
let showMoreHtml = '';
if (idx == thumbMaxNum) {
showMoreHtml += `
`;
}
return `
${showMoreHtml}
`;
}).join('')
}
`;
}()}
`).join('')}