See all offers
Orders after Feb 9 will be processed on Feb 16 (Chinese New Year)
Orders after Feb 9 will be processed on Feb 16 (Chinese New Year)
Shop now
Free Shopping On Orders $99
Free Shopping On Orders $99
Buy2 10% OFF Buy4 20% OFF Buy 8 30% OFF
Buy2 10% OFF Buy4 20% OFF Buy 8 30% OFF
Orders after Feb 9 will be processed on Feb 16 (Chinese New Year)
Shop now
Free Shopping On Orders $99
Buy2 10% OFF Buy4 20% OFF Buy 8 30% OFF
Orders after Feb 9 will be processed on Feb 16 (Chinese New Year)
Shop now
Free Shopping On Orders $99
Buy2 10% OFF Buy4 20% OFF Buy 8 30% OFF
Home
New Arrivals
Sweatshirt
Tops
Polo
T-shirts
Shirts
Hoodies
Sweater
Coats & Jackets
Bottoms
Shorts
Pants
Two Pieces Outfits
Hats
More links
Log in
Create an account
${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)}
${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)}
Search
Home
New Arrivals
Sweatshirt
Tops
Tops
Polo
T-shirts
Shirts
Hoodies
Sweater
Coats & Jackets
Bottoms
Bottoms
Shorts
Pants
Two Pieces Outfits
Hats
Log in
function setSearchUrl(searchValue) { return Promise.resolve({ url: '/search?q=' + searchValue }); } exportFunction('setSearchUrl', setSearchUrl);
Top search terms
${function() { if (data === undefined || typeof data !== 'string' || data == '') return ''; const searchEmpty = ("Your search for \"{test}\" did not yield any results.").replace('{test}', data); return `
View more
${searchEmpty}
`; }()}
${data.index + 1}/40
Unisex Jumpman Classic Beanie
${(function () { const automatic_discount_list = originData.automatic_discount_list; // 显示类型 const DISPLAY_TYPE = { DTE_FOLD: 'DTE_FOLD', // 折叠 DTE_TILE: 'DTE_TILE' // 平铺 } const DEFAULT_CONFIG = { BG: 'rgba(235, 57, 27, 0.04)', TEXT_COLOR: '#EB391B', BORDER_COLOR: 'rgb(235, 57, 27)', ADD_TO_CART_BG: 'transparent', ADD_TO_CART_TEXT_COLOR: 'rgb(235, 57, 27)', ADD_TO_CART_BORDER_COLOR: 'rgb(235, 57, 27)', }; const isExist = automatic_discount_list?.length > 0 && automatic_discount_list.some(item => item.discount[0].product_enabled); // 如果没有任何自动折扣,则隐藏,防止gap占位 if (!isExist) { return ` `; } else { return `
${(function () { return automatic_discount_list.map((item) => { // 模版类型 const template_type = item.discount[0].template_type; // 是否显示自动折扣 const is_show_automatic_discount = item.discount[0].product_enabled; // 是否跳转落地页 const is_redirection = item.discount[0].is_redirection; // 折扣图标 const discount_icon = item.discount_icon; // 第一个自动折扣 const first_automatic_discount = item.discount[0]; // 显示折叠展示 const isFold = (item.discount[0].display_type || DISPLAY_TYPE.DTE_FOLD) === DISPLAY_TYPE.DTE_FOLD; // 文本数组 const text_arr = item.discount[0].config.texts; // 条件值数组 const condition_values = item?.discount[0]?.condition_values || []; // 落地页链接 const first_landing_url = `/promotions/discount-default/${first_automatic_discount.discount_id}`; // 自动折扣总数 const automatic_discount_total = item.discount.length; // 是否显示折扣图标 const isHasDiscountIcon = discount_icon ? true : false; // 是否显示折扣图标且模版类型不为tag和add_to_cart const isHasDiscountIconWithNoTag = (template_type != 'tag' && template_type != 'add_to_cart' && isHasDiscountIcon)? true : false; // 文本颜色 let text_color = DEFAULT_CONFIG.TEXT_COLOR; // 背景颜色 const bgFn = (curBg) => template_type === "text" ? "transparent" : curBg; let bg_color = bgFn(DEFAULT_CONFIG.BG); // 边框颜色 const borderFn = (curBorder) => template_type == "tag" ? curBorder : "initial"; let border_color = borderFn(DEFAULT_CONFIG.BORDER_COLOR); // 模版配置 let template_config = first_automatic_discount.template_config; // 一键加购样式 let addToCartBtnBgColor = DEFAULT_CONFIG.ADD_TO_CART_BG; let addToCartBtnTextColor = DEFAULT_CONFIG.ADD_TO_CART_TEXT_COLOR; let addToCartBtnBorderColor = DEFAULT_CONFIG.ADD_TO_CART_BORDER_COLOR; // 兜底方案 try { if(template_config.length !== 0){ template_config = JSON.parse(template_config); text_color= isHasDiscountIconWithNoTag ? template_config.color[template_type].icon_text_color : template_config.color[template_type].text_color; bg_color = bgFn(template_config.color[template_type].background_color); const arrayRgba = bg_color.split(","); arrayRgba.splice(3, 1, " 1)"); border_color = borderFn(`${arrayRgba.join(",")}`); addToCartBtnTextColor = template_config.color[template_type].button_text_color; addToCartBtnBorderColor = template_config.color[template_type].button_border_color; addToCartBtnBgColor = template_config.color[template_type].button_background_color; } } catch (error) { console.error('template_config_error', error); template_config = { color: { [template_type]: { icon_text_color: DEFAULT_CONFIG.TEXT_COLOR, text_color: DEFAULT_CONFIG.TEXT_COLOR, background_color: DEFAULT_CONFIG.BG } } }; } // 标签 const isTag = template_type == 'tag'; // 文字和横幅 const isTextAndBanner = template_type == 'text' || template_type == 'banner'; // 是否一键加购 const isAddToCart = template_type == 'add_to_cart'; // 文字样式 const textStyle = `color: ${text_color}; background-color: transparent; border: none;`; // 标签样式 const labelStyle = `color: ${text_color};border: 1px solid ${border_color};background-color:${bg_color};padding: 4px;`; // 横幅样式 const bannerStyle = `color: ${text_color};border: none; background-color:${bg_color}`; // 一键加购单个容器样式(只包含动态样式) const addToCartSingleContainerStyle = `color: ${text_color}; background-color:${bg_color};`; // 一键加购按钮样式(只包含配置的动态样式) const addToCartBtnStyle = `color: ${addToCartBtnTextColor}; background-color:${addToCartBtnBgColor}; border:1px solid ${addToCartBtnBorderColor};`; // 外层样式在标签样式下不展示颜色配置,除开标签类型,颜色都可以在外层覆盖 let outerStyle = ''; if (template_type == 'text') { outerStyle = textStyle; } else if (template_type == 'tag') { outerStyle = "border: none;"; } else if (template_type == 'banner') { outerStyle = bannerStyle; } /** * 1. 标签一定是单独样式展示的 * 2. 折叠:横向布局,文字和横幅,合并成一行文本; 标签:单独样式处理 * 3. 平铺:纵向布局,文字、横幅和标签; 标签:单独样式处理;一键加购默认都是平铺 */ let txtHtml = ``; if (isFold) { if(isTag) { // 标签 const spanText = text_arr.map((text) => { return `
${text}
`; }).join(''); txtHtml = `
${spanText}
`; } else { // 文字和横幅 txtHtml = `
${first_automatic_discount.config.text}
`; } } else { // 文字和横幅, 但标签有自己的样式,且一键加购有单独样式 const spanText = text_arr.map((text, index) => { const condition_value = condition_values[index]; if(isAddToCart) { return `
${text}
` } else { return `
${text}
`; } }).join(''); // 都是纵向布局,标签有间距 txtHtml = `
${spanText}
`; } /** * 显示图标的判断 */ const discount_type = item.discount_type; const isShowRebateIcon = ["DT_REBATE_CTQ_OTP", "DT_REBATE_CTQ_OTR", "DT_REBATE_CTA_OTP", "DT_REBATE_CTA_OTR", "DT_M_N_DISCOUNT"].includes(discount_type) && isTextAndBanner const isShowBxgyIcon = ["DT_BUY_ONE_GET_ONE", "DT_BUY_X_GET_Y"].includes(discount_type) const isShowBundleIcon = ["DT_CLASSIC_BUNDLE","DT_MIX_MATCH_BUNDLE"].includes(discount_type); /** * 渲染下拉框或抽屉的折扣列表 */ const discount_list_html = (curItem) => { return `
${function() { return curItem.discount.map(childItem => { return `
${childItem.config.text}
${childItem.config.text}
`}).join(''); }()}
`; } return `
${txtHtml}
${discount_list_html(item)}
${discount_list_html(item)}
${function() { return text_arr.map((text) => { return `
${text}
`; }).join(''); }()}
`; }).join(''); })()}
` } })()}
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'bf06a421-6a4a-4c6a-8ec7-84076599aa86'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = 'f5eef635-46ad-489f-b884-668f72cbf6e6'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == 'f5eef635-46ad-489f-b884-668f72cbf6e6' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = 'f5eef635-46ad-489f-b884-668f72cbf6e6'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() {} unmountCallback() {} setupAction_() { this.registerAction('showAddToCartToast', () => { const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy') if(themeAddToCartToastEl) return const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
$23.89
$33.89
Save
$10.00
Sold 7
${function(){ const variant = data.variant; const price = "23.89"; const priceMax = "23.89"; const saveType = "amount"; const saveText = "Save {off_ratio}"; return `
${saveText.replace('{off_ratio}', saveType == 'percent' ? variant.off_ratio + '%' : `
` )}
Sold 7
` }()}
Color:
01According to the color card picture
01According to the color card picture
02 Press color card picture
03According to the color card picture
04According to the color card picture
05According to the color card picture
06According to the color card picture
07According to the color card picture
08According to the color card picture
09According to the color card picture
10 Click on the color card picture
11 Click on the color card picture
12 color card pictures
13 by color card pictures
14 Click on the color card picture
15 by color card pictures
16 color card pictures
17 by color card picture
18 color card pictures
19 by color card pictures
20 color card pictures
21 color card pictures
22 color card pictures
23 by color card pictures
24 color card pictures
25 color card pictures
26 color card pictures
27 by color card pictures
28 color card pictures
29 color card pictures
30 color card pictures
31 by color card pictures
32 color card pictures
33 by color card picture
34 color card pictures
35 color card pictures
36 color card pictures
37 color card pictures
38 color card pictures
39 color card pictures
40 color card pictures
Size:
One size (54cm-60cm)
One size (54cm-60cm)
${data.value}
Quantity
Add to cart
-
$23.89
-
Share the love
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Description
Description
ProductNo
SP241214FQQM
Season
Autumn.Winter
Style
Casual
Material
Polyester
You may also like
Recently viewed
${function() { const force_image_size = "natural"; const product_hover_on = true; const product_show_sale_label = false; const product_save_type = "amount"; const badge1 = ""; const badge2 = ""; const badge3 = ""; const product_title_mobile_hide = false; const product_title_style = "hide"; const enable_collection_thumb_image = false; const variantNames = ["color"]; const thumbMaxNum = 4; const suffix_id = Math.random().toFixed(6).slice(-6); const url = data.withinUrl; 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 = data.secondImage; let imageHoverOn = !!image2.src; if (force_image_size !== 'natural') { imageHeight = imageWidth * force_image_size; } 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.withinUrl); } } 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 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 `
${saleOn ? saveText : soldOutText}
${badge1}
${badge2}
${badge3}
${ "title" === 'subtitle' ? data.brief : data.title }
From
${saveText}
${showVariants.map((item, idx) => { let showMoreHtml = ''; if (idx == thumbMaxNum) { showMoreHtml += `
+${showVariants.length - thumbMaxNum}
`; } return ` ${showMoreHtml}
`; }).join('') }
`; }()}
${function() { const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; const defaultIndex = !!defaultSelectedVariant ? data.images.findIndex(img => img.src == (defaultSelectedVariant.image && defaultSelectedVariant.image.src)) : -1; const initialSlide = defaultIndex == -1 ? 0 : defaultIndex; const attrs = data.images.length > 1 ? 'slide controls' : ''; return `
`; }()}
${data.title}
${data.brief}
${function() { const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; return `
${("Save {off_ratio}").replace('{off_ratio}', ("amount") == 'percent' ? defaultSelectedVariant.off_ratio + '%' : `
` )}
-
`; }()}
${function(){ const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; let status_lan = "Add to cart"; if ((defaultSelectedVariant && !defaultSelectedVariant.available) || (!defaultSelectedVariant && !data.available)) { status_lan = "Sold out"; } return `
Quantity
${status_lan}
Buy now
` }()}
${function() { return data.product.options.map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; let isThumbImage = !!option.showThumbImage; const thumbStyle = "image_with_text"; const thumbType = isThumbImage ? thumbStyle.replace(/_/g, '-') : 'text'; const variantType = null; const selectedVariantVal = data.selectedOptions && data.selectedOptions.length && data.selectedOptions.find(v => v.name === optionName).value[0] || ''; const isSelected = (value) => { const selected = (data.selectedOptions || []).find(v => v.name === optionName); return selected && selected.value.length && selected.value[0] == value; }; const getThumbImage = (value) => { const options = data.product.options || []; const option = options.find(o => o.name === optionName); if (option.thumbImages) { const thumbImage = option.thumbImages.find(t => t.value === value); if (thumbImage && thumbImage.image) { return { src: thumbImage.image.src, alt: thumbImage.image.alt }; } } return {src: '', alt: ''}; }; return `
${optionName.slice(0, 1).toUpperCase() + optionName.slice(1).toLowerCase()} :
${selectedVariantVal}
${option.values.map((value, idx) => { return `
${value}
${value}
` }).join('')}
`; }).join(''); }()}
${data.value || ''}
${("Save {off_ratio}").replace('{off_ratio}', ("amount") == 'percent' ? data.variant.off_ratio + '%' : `
` )}
-
-
${function() { const freeAmount = 99; const totalPrice = data?.total_price || data?.cart?.total_price || 0; const amountDiff = freeAmount - totalPrice; const percentDiff = (amountDiff > 0 ? (totalPrice / freeAmount * 100) : 100) + '%'; let tipText = `
Your order is free delivery
`; if (amountDiff > 0) { tipText = `
Spend
more and get free shipping!
`; } return `
${tipText}
`; }()}
${data.line_items.map(item => { const variantNames = item.options.map(option => option.value).join(' / '); return `
${item.product_title}
${variantNames}
${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return `
${propertie.name}:
View image
` }else{ return `
${propertie.name}: ${propertie.value}
` } }).join('')}
*${item.quantity}
Free gift
${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return `
${discount_item.title}
(-
)
` }).join('') }
Remove
`; }).join('')}
Cart
${ 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);
discount code
Apply
${function(){ if (data.status === 'APPLY_STATUS_SUCCESS' || !data.message) { return `
` } return `
${data.originData.message}
Add
` }()}
${data.map( item => { return `
${item}
` }).join('')}
Below discount codes are unavailable
${data.map( item => { return `
${item}
` }).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 `
${item.discount_text}
-
${item.code}
` }).join(''); return `
${recommendDom}
${discountCodeListDom}
${recommendDom}
${discountCodeListDom}
` }()}
Add note
Write something here to seller.
${data.note || data.value}
Discount
${data.total_discount > 0 ? '-' : ''}
Subtotal
Taxes and shipping calculated at checkout
Check out
Your shopping cart is empty
Continue shopping
You may also like