${(function(){ const get_random_six_digits = () => { return Math.random().toString().slice(-6) }; const wholesale_enabled = false; const setting_product_image_display = "133.33%"; const product_image = data.image; const secondary_image = data.secondImage; const image_width = product_image.width | 600; let image_height = product_image.height | 600; if(setting_product_image_display == '100%'){ image_height = image_width }else if(setting_product_image_display == '133.33%'){ image_height = image_width * 1.3333; }; let product_image_hover_on = false; const has_save_label = true && ((+data.compare_at_price) > (+data.price)); const is_single_variant = data.variants.length == 1; const min_price_variant_href = (data.min_price_variant && data.min_price_variant.available) ? data.min_price_variant.withinUrl : data.withinUrl; const retail_price_max = data.retail_price_max || data.compare_at_price_max; const THUMBNAILS_MAX_SIZE = 3; const thumbnails = data.thumbVariants.slice(0, THUMBNAILS_MAX_SIZE); const image_wrap_id = 'image_wrap_' + get_random_six_digits(); const image_carousel_id = 'image_carousel_' + get_random_six_digits(); const thumbnails_selector_id = 'thumbnails_selector_' + get_random_six_digits(); const form_id = 'form_' + get_random_six_digits() + ""; const mixed_wholesale = data.mixed_wholesale; return `
${ data.available ? `${ (+data.compare_at_price > +data.price) ? `Save ${ data.off_ratio }% ` : '' }` : "Sold out" }
Mixed Lot
${data.title}
${ data.price_min != data.price_max ? `from
` : `
` }
+${data.remainInvisibleThumbCount}
` })()}
class SpzCustomLabelScript extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return true; } mountCallback() { const script = this.element; const boxEl = script.closest('.product_snippet_label_area'); const labelEl = boxEl.querySelector('.product_snippet__label'); if(!labelEl) return; const observer = new ResizeObserver((entries) => { const labelEls = boxEl.querySelectorAll('.product_snippet__label'); const offsetWidth = Math.max(...Array.from(labelEls).map(el => el.offsetWidth)); if(offsetWidth>0){ const padding = offsetWidth / 2 + 8 + 'px'; boxEl.style.left = padding; boxEl.style.right = padding; boxEl.style.visibility = 'visible'; } }); observer.observe(labelEl); } } SPZ.defineElement('spz-custom-label-script', SpzCustomLabelScript);
(function () { class SPZCustomEventTrack extends SPZ.BaseElement { constructor(element) { super(element); this.action_ = SPZServices.actionServiceForDoc(this.element); } isLayoutSupported(layout) { return true; } buildCallback() { this.setupAction_(); } track(key, value) { console.log('tracking...', key, value); if(window.sa){ window.sa.track(key, value); }else{ let sa = null; Object.defineProperty(window, 'sa',{ get: function() { return sa; }, set(val){ sa = val; sa.track(key, value); } }) } } setupAction_() { const clickParams = { business_type: 'product_theme', event_name: 'function_click', function_name: 'Farida', plugin_name: 'Farida', template_name: "page", template_type: 3, module: 'online_store', module_type: 'online_store', tab_name: '', card_name: '', event_developer: 'ccbGolumn', event_type: 'click', }; this.registerAction('trackClick', (e) => { const event_info = e.args || {}; this.track('function_click', { ...clickParams, event_info: JSON.stringify(event_info), }); }); this.registerAction('trackExpose', (e) => { const event_info = e.args || {}; this.track('function_expose', { ...clickParams, event_name: 'function_expose', event_type: 'expose', event_info: JSON.stringify(event_info), }); }); } } SPZ.defineElement('spz-custom-event-track', SPZCustomEventTrack); }())
90 Days Free Exchange & Return.
90 Days Free Exchange & Return.
90 Days Price Guaranteed.
90 Days Price Guaranteed.
Log in
Create an account
${data.data && data.data.count}
WOMEN
SILK CLOTHING
Silk Tops
Silk Tanks & Camisoles
Silk Blouses & Shirts
Silk T-shirts
Silk Dresses
Silk Pants
Silk Skirts
Silk Outwears
Silk Two-piece Set
Plus Size
CASHMERE
Cashmere Sweater
Cashmere Hoodie
Cashmere Cardigan
Cashmere Coat
Cashmere Pants
Cashmere Dress
Cashmere Thermal Underwear
Cashmere Robe
Cashmere Set
Cashmere Beanie
Cashmere Scarf
Cashmere Accessories
WOOL
Wool Tops
Wool Cardigans
Wool Coats
Wool Bottoms
LINEN
Linen Tops
Linen Shirt & Blouse
Linen T-shirts
Linen Camisole & Tank
Linen Dresses
Linen Pants
Linen Shorts
Linen Skirt
Linen Homewears
Linen Outwear
SILK LOUNGEWEAR & SLEEPWEAR
Silk Pajamas
Silk Nightgown
Silk Robe & Robe Set
Silk Camisole Set
Silk Travel Set
Embroidered & Personalized
Plus Size
COUPLE
SILK LINGERIE
Silk Bra & Bralette
Silk Panties
Silk Bra & Panties Set
Silk Socks
Silk Camisole
Silk Leggings
Silk Thermal
SILK ACCESSORIES
Silk Scarf
Silk Scrunchie
Silk Sleep Cap
Silk Eye Mask
Silk Face Covering
Silk Must-Haves For Travel
FEATURED
Plus Size
Embroidered & Personalized
Silk Velvet
Down Jackets
Classic
Luxury
Organic & Eco-Friendly
MEN
SILK CLOTHING
Silk Shirts & T-shirts
Silk Beachwear
Silk Bottom For Men
CASHMERE
Cashmere Sweater
Cashmere Hoodie
Cashmere Cardigan
Cashmere Pants
Cashmere Thermal Underwear
WOOL
Wool Tops
Wool Cardigan
Wool Coats
LINEN
Linen Tops
Linen Shirts
Linen T-shirts
Linen Pants
Linen Shorts
Linen Blazers
SILK LOUNGEWEAR & SLEEPWEAR
Silk Pajamas
Silk Robe
Silk Homewear
Couple
Embroidered & Personalized
SILK LINGERIE
Silk T-shirts
Silk Underwear & Boxers
Silk Socks
Silk Thermal
SILK ACCESSORIES
Silk Scarf
Silk Ties
Silk Must-Haves For Travel
FEATURED
Embroidered & Personalized
Cashmere
Wool
No-Iron
KID
SILK LOUNGEWEAR & SLEEPWEAR
Baby
Girl
Boy
SILK APPAREL
Baby
Girl
Boy
CASHMERE
LINEN COLLECTION
Linen Tops
Linen Dresses
Linen Pants
SILK BEDDING
Silk Quilt
Silk Pillowcase
Silk Blanket
BEDDING
SILK BED LINENS
Silk Fitted Sheets
Silk Flat Sheets
Silk Duvet Covers
SILK BEDDING SET
Silk Sheet Sets
Silk Duvet Cover Sets
SILK PILLOWCASES
Silk Must-Have Pillowcases
Silk Solid Pillowcases
Silk Printed Pillowcases
Silk Kids Pillowcases
Silk European Pillowcases
Silk Shams
SILK BASICS
Silk Pillow
Silk Comforter
FEATURED
Classic
Organic & Eco-Friendly
Luxury
19 Momme
22 Momme
25 Momme
RESOURCES
Gifts Of Sleep Wellness
Silk Sheets Guide
Silk Comforter Guide
Silk Pillowcase Guide
Sleep Better Guide
GIFT
FOR WOMEN
Best Seller For Her
Silk Sleepwear
Monogrammed Silk Sleepwear
Silk Scarf
Silk Blouse & Shirt
Silk Accessories
Silk Panties
Silk Bra
FOR MEN
Best Seller For Him
Silk Sleepwear
Monogrammed Silk Sleepwear
Silk Ties
Silk Scarf
Silk Shirt
Silk Underwear
FOR KIDS
Best Seller For Kids
Silk Pillowcase
Silk Bedding
FOR FAMILY
Best Seller For Family
For Parents
GIFT CARD
GIFT GUIDE
FEATURED
New Arrival
Best Seller
Outlets
Save 40%
Save 40%
Spring V-neck Silk Shirt for Women
$119.00
$199.00
+2
More links
${(function(){ const formatLinks = (links) => { return links.map(link => { link.tag = tags[link.title.toUpperCase()] || {}; link.target_attr = link.target == '_blank' ? 'target="_blank"' : ''; link.href_attr = link.url ? `href="${link.url}"` : ''; if(link.children && link.children.length){ link.children = formatLinks(link.children); } return link; }) }; const tags = "{}"; let linkList = [ { id: 69243175, title: "WOMEN", url: "\/pages\/women", target: "_blank", levels: 2, product0: { id: (null) }, children: [ { title: "SILK CLOTHING", url: "\/collections\/silk-clothing-for-women", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Tops", url: "\/pages\/silk-top-for-women", target: "_blank", levels: 0, }, { title: "Silk Tanks & Camisoles", url: "\/collections\/silk-tank-camisole", target: "_blank", levels: 0, }, { title: "Silk Blouses & Shirts", url: "\/collections\/silk-blouse-shirt", target: "_blank", levels: 0, }, { title: "Silk T-shirts", url: "\/collections\/silk-t-shirt-for-women", target: "_blank", levels: 0, }, { title: "Silk Dresses", url: "\/collections\/silk-dresses", target: "_blank", levels: 0, }, { title: "Silk Pants", url: "\/collections\/silk-pants-womens", target: "_blank", levels: 0, }, { title: "Silk Skirts", url: "\/collections\/silk-skirt", target: "_blank", levels: 0, }, { title: "Silk Outwears", url: "\/collections\/outwear-for-women", target: "_blank", levels: 0, }, { title: "Silk Two-piece Set", url: "\/collections\/womens-two-pieces-set-silk-clothing", target: "_blank", levels: 0, }, { title: "Plus Size", url: "\/collections\/plus-size-pajamas-for-women", target: "_blank", levels: 0, }, ] }, { title: "CASHMERE", url: "\/collections\/womens-cashmere-collection", target: "_blank", levels: 1, cover: '
', children: [ { title: "Cashmere Sweater", url: "\/collections\/womens-cashmere-sweater", target: "_blank", levels: 0, }, { title: "Cashmere Hoodie", url: "\/collections\/cashmere-hoodie-women", target: "_blank", levels: 0, }, { title: "Cashmere Cardigan", url: "\/collections\/cashmere-cardigan-women", target: "_blank", levels: 0, }, { title: "Cashmere Coat", url: "\/collections\/cashmere-coat", target: "_blank", levels: 0, }, { title: "Cashmere Pants", url: "\/collections\/cashmere-pants-women", target: "_blank", levels: 0, }, { title: "Cashmere Dress", url: "\/collections\/cashmere-dress", target: "_blank", levels: 0, }, { title: "Cashmere Thermal Underwear", url: "\/collections\/womens-cashmere-thermal-underwear", target: "_blank", levels: 0, }, { title: "Cashmere Robe", url: "\/collections\/cashmere-robe-womens", target: "_blank", levels: 0, }, { title: "Cashmere Set", url: "\/collections\/cashmere-set", target: "_blank", levels: 0, }, { title: "Cashmere Beanie", url: "\/collections\/cashmere-beanie", target: "_blank", levels: 0, }, { title: "Cashmere Scarf", url: "\/collections\/cashmere-scarf", target: "_blank", levels: 0, }, { title: "Cashmere Accessories", url: "\/collections\/cashmere-accessories", target: "", levels: 0, }, ] }, { title: "WOOL", url: "\/collections\/womens-wool-collection", target: "", levels: 1, cover: '
', children: [ { title: "Wool Tops", url: "\/collections\/womens-wool-top", target: "", levels: 0, }, { title: "Wool Cardigans", url: "\/collections\/womens-wool-cardigan", target: "", levels: 0, }, { title: "Wool Coats", url: "\/collections\/wool-coat-for-women", target: "", levels: 0, }, { title: "Wool Bottoms", url: "\/collections\/womens-wool-bottoms", target: "", levels: 0, }, ] }, { title: "LINEN", url: "\/collections\/linen-collection-for-women", target: "", levels: 1, cover: '
', children: [ { title: "Linen Tops", url: "\/collections\/linen-top-for-women", target: "", levels: 0, }, { title: "Linen Shirt & Blouse", url: "\/collections\/linen-shirt-blouse", target: "", levels: 0, }, { title: "Linen T-shirts", url: "\/collections\/linen-t-shirt-for-women", target: "", levels: 0, }, { title: "Linen Camisole & Tank", url: "\/collections\/linen-camisole-tank", target: "", levels: 0, }, { title: "Linen Dresses", url: "\/collections\/linen-dresses", target: "", levels: 0, }, { title: "Linen Pants", url: "\/collections\/linen-pants-for-women", target: "", levels: 0, }, { title: "Linen Shorts", url: "\/collections\/linen-shorts-for-women", target: "", levels: 0, }, { title: "Linen Skirt", url: "\/collections\/linen-skirt", target: "", levels: 0, }, { title: "Linen Homewears", url: "\/collections\/linen-homewears-for-women", target: "", levels: 0, }, { title: "Linen Outwear", url: "\/collections\/linen-outwear-for-women", target: "", levels: 0, }, ] }, { title: "SILK LOUNGEWEAR & SLEEPWEAR", url: "\/collections\/womens-silk-sleepwear", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Pajamas", url: "\/collections\/silk-pajamas-for-women", target: "_blank", levels: 0, }, { title: "Silk Nightgown", url: "\/collections\/silk-nightgown", target: "_blank", levels: 0, }, { title: "Silk Robe & Robe Set", url: "\/collections\/womens-silk-robe", target: "_blank", levels: 0, }, { title: "Silk Camisole Set", url: "\/collections\/silk-camisole-set", target: "_blank", levels: 0, }, { title: "Silk Travel Set", url: "\/collections\/silk-sleepwear-travel-set", target: "_blank", levels: 0, }, { title: "Embroidered & Personalized", url: "\/pages\/customized", target: "_blank", levels: 0, }, { title: "Plus Size", url: "\/collections\/plus-size-pajamas-for-women", target: "", levels: 0, }, { title: "COUPLE", url: "\/collections\/silk-sleepwear-for-couple", target: "_blank", levels: 0, }, ] }, { title: "SILK LINGERIE", url: "\/collections\/womens-silk-lingerie", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Bra & Bralette", url: "\/pages\/silk-bra-collection", target: "_blank", levels: 0, }, { title: "Silk Panties", url: "\/collections\/silk-panties", target: "_blank", levels: 0, }, { title: "Silk Bra & Panties Set", url: "\/collections\/silk-bra-and-shorts-set", target: "_blank", levels: 0, }, { title: "Silk Socks", url: "\/collections\/silk-socks-womens", target: "_blank", levels: 0, }, { title: "Silk Camisole", url: "\/collections\/silk-camisole-top", target: "_blank", levels: 0, }, { title: "Silk Leggings", url: "\/collections\/silk-leggings", target: "_blank", levels: 0, }, { title: "Silk Thermal", url: "\/collections\/silk-thermal-underwear-for-women", target: "_blank", levels: 0, }, ] }, { title: "SILK ACCESSORIES", url: "\/collections\/silk-accessories-for-women", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Scarf", url: "\/pages\/silk-scarf", target: "_blank", levels: 0, }, { title: "Silk Scrunchie", url: "\/collections\/silk-scrunchie", target: "_blank", levels: 0, }, { title: "Silk Sleep Cap", url: "\/collections\/silk-nightcap", target: "_blank", levels: 0, }, { title: "Silk Eye Mask", url: "\/collections\/silk-eye-mask", target: "_blank", levels: 0, }, { title: "Silk Face Covering", url: "\/collections\/silk-face-covering", target: "_blank", levels: 0, }, { title: "Silk Must-Haves For Travel", url: "\/collections\/silk-must-haves-for-travel", target: "_blank", levels: 0, }, ] }, { title: "FEATURED", url: "\/collections\/silk-cashmere-apparel-for-women", target: "_blank", levels: 1, cover: '
', children: [ { title: "Plus Size", url: "\/collections\/plus-size-pajamas-for-women", target: "_blank", levels: 0, }, { title: "Embroidered & Personalized", url: "\/pages\/customized", target: "_blank", levels: 0, }, { title: "Silk Velvet", url: "\/collections\/silk-velvet", target: "_blank", levels: 0, }, { title: "Down Jackets", url: "\/collections\/women-down-jackets", target: "", levels: 0, }, { title: "Classic", url: "\/collections\/classic-silk-apparel-for-women", target: "_blank", levels: 0, }, { title: "Luxury", url: "\/collections\/luxury-womens-silk-sleepwear", target: "_blank", levels: 0, }, { title: "Organic & Eco-Friendly", url: "\/collections\/organic-eco-friendly-womens-silk-sleepwear", target: "_blank", levels: 0, }, ] }, ] }, { id: 69243321, title: "MEN", url: "\/pages\/mens", target: "_blank", levels: 2, product0: { id: (null) }, children: [ { title: "SILK CLOTHING", url: "\/collections\/silk-clothing-mens", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Shirts & T-shirts", url: "\/collections\/silk-shirt-mens", target: "_blank", levels: 0, }, { title: "Silk Beachwear", url: "\/collections\/silk-beachwear-for-men", target: "_blank", levels: 0, }, { title: "Silk Bottom For Men", url: "\/collections\/mens-silk-pants", target: "_blank", levels: 0, }, ] }, { title: "CASHMERE", url: "\/collections\/mens-cashmere-collection", target: "_blank", levels: 1, cover: '
', children: [ { title: "Cashmere Sweater", url: "\/collections\/mens-cashmere-sweater", target: "_blank", levels: 0, }, { title: "Cashmere Hoodie", url: "\/collections\/cashmere-hoodie-men", target: "_blank", levels: 0, }, { title: "Cashmere Cardigan", url: "\/collections\/cashmere-cardigan-men", target: "_blank", levels: 0, }, { title: "Cashmere Pants", url: "\/collections\/cashmere-pants-men", target: "", levels: 0, }, { title: "Cashmere Thermal Underwear", url: "\/collections\/mens-cashmere-underwear", target: "_blank", levels: 0, }, ] }, { title: "WOOL", url: "\/collections\/mens-wool-collection", target: "", levels: 1, cover: '
', children: [ { title: "Wool Tops", url: "\/collections\/mens-cashmere-sweater", target: "", levels: 0, }, { title: "Wool Cardigan", url: "\/collections\/mens-wool-cardigan", target: "", levels: 0, }, { title: "Wool Coats", url: "\/collections\/wool-coat-for-men", target: "", levels: 0, }, ] }, { title: "LINEN", url: "\/collections\/linen-for-men", target: "", levels: 1, cover: '
', children: [ { title: "Linen Tops", url: "\/collections\/linen-top-for-men", target: "", levels: 0, }, { title: "Linen Shirts", url: "\/collections\/linen-shirt-for-men", target: "", levels: 0, }, { title: "Linen T-shirts", url: "\/collections\/linen-t-shirt-for-men", target: "", levels: 0, }, { title: "Linen Pants", url: "\/collections\/linen-pants-for-men", target: "", levels: 0, }, { title: "Linen Shorts", url: "\/collections\/linen-shorts-for-men", target: "", levels: 0, }, { title: "Linen Blazers", url: "\/collections\/linen-blazers-for-men", target: "", levels: 0, }, ] }, { title: "SILK LOUNGEWEAR & SLEEPWEAR", url: "\/collections\/mens-silk-sleepwear", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Pajamas", url: "\/collections\/mens-silk-pajamas", target: "_blank", levels: 0, }, { title: "Silk Robe", url: "\/collections\/mens-silk-robe", target: "_blank", levels: 0, }, { title: "Silk Homewear", url: "\/collections\/silk-homewear-for-men", target: "_blank", levels: 0, }, { title: "Couple", url: "\/collections\/silk-sleepwear-for-couple", target: "", levels: 0, }, { title: "Embroidered & Personalized", url: "\/pages\/customized", target: "_blank", levels: 0, }, ] }, { title: "SILK LINGERIE", url: "\/collections\/mens-silk-lingerie", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk T-shirts", url: "\/collections\/mens-silk-t-shirts", target: "_blank", levels: 0, }, { title: "Silk Underwear & Boxers", url: "\/collections\/mens-silk-underwear", target: "_blank", levels: 0, }, { title: "Silk Socks", url: "\/collections\/mens-silk-socks", target: "_blank", levels: 0, }, { title: "Silk Thermal", url: "\/collections\/silk-thermal", target: "_blank", levels: 0, }, ] }, { title: "SILK ACCESSORIES", url: "\/collections\/silk-accessories-for-men", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Scarf", url: "\/collections\/mens-silk-scarf", target: "_blank", levels: 0, }, { title: "Silk Ties", url: "\/collections\/silk-ties", target: "_blank", levels: 0, }, { title: "Silk Must-Haves For Travel", url: "\/collections\/silk-travel-must-haves-for-men", target: "_blank", levels: 0, }, ] }, { title: "FEATURED", url: "\/collections\/new-for-men", target: "_blank", levels: 1, cover: '
', children: [ { title: "Embroidered & Personalized", url: "\/pages\/customized", target: "_blank", levels: 0, }, { title: "Cashmere", url: "\/collections\/mens-cashmere-collection", target: "_blank", levels: 0, }, { title: "Wool", url: "\/collections\/mens-wool-collection", target: "_blank", levels: 0, }, { title: "No-Iron", url: "\/collections\/no-iron-silk-items", target: "", levels: 0, }, ] }, ] }, { id: 69243405, title: "KID", url: "\/pages\/silk-for-kids", target: "_blank", levels: 2, product0: { id: (null) }, children: [ { title: "SILK LOUNGEWEAR & SLEEPWEAR", url: "\/collections\/silk-sleepwear-for-kid", target: "_blank", levels: 1, cover: '
', children: [ { title: "Baby", url: "\/collections\/silk-sleepwear-for-baby", target: "_blank", levels: 0, }, { title: "Girl", url: "\/collections\/silk-sleepwear-for-girl", target: "_blank", levels: 0, }, { title: "Boy", url: "\/collections\/silk-sleepwear-for-boy", target: "_blank", levels: 0, }, ] }, { title: "SILK APPAREL", url: "\/collections\/silk-apparel-for-kid", target: "_blank", levels: 1, cover: '', children: [ { title: "Baby", url: "\/collections\/silk-clothing-for-baby", target: "_blank", levels: 0, }, { title: "Girl", url: "\/collections\/silk-apparel-for-girl", target: "_blank", levels: 0, }, { title: "Boy", url: "\/collections\/silk-clothing-for-boy", target: "_blank", levels: 0, }, ] }, { title: "CASHMERE", url: "\/collections\/kids-cashmere", target: "", levels: 0, cover: '', children: [ ] }, { title: "LINEN COLLECTION", url: "\/collections\/linen-for-kids", target: "", levels: 1, cover: '', children: [ { title: "Linen Tops", url: "\/collections\/linen-top-for-kids", target: "", levels: 0, }, { title: "Linen Dresses", url: "\/collections\/linen-dress-for-kid", target: "", levels: 0, }, { title: "Linen Pants", url: "\/collections\/linen-pant-for-kids", target: "", levels: 0, }, ] }, { title: "SILK BEDDING", url: "\/collections\/silk-bedding-for-kid", target: "_blank", levels: 1, cover: '', children: [ { title: "Silk Quilt", url: "\/collections\/silk-quilt-for-kid", target: "_blank", levels: 0, }, { title: "Silk Pillowcase", url: "\/collections\/kids-silk-pillowcase", target: "_blank", levels: 0, }, { title: "Silk Blanket", url: "\/collections\/silk-blanket-for-kid", target: "_blank", levels: 0, }, ] }, ] }, { id: 69243441, title: "BEDDING", url: "\/pages\/real-silk-bedding", target: "_blank", levels: 2, product0: { id: (null) }, children: [ { title: "SILK BED LINENS", url: "\/collections\/silk-bed-linens", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Fitted Sheets", url: "\/collections\/silk-fitted-sheet", target: "_blank", levels: 0, }, { title: "Silk Flat Sheets", url: "\/collections\/silk-flat-sheet", target: "_blank", levels: 0, }, { title: "Silk Duvet Covers", url: "\/collections\/silk-duvet-cover", target: "_blank", levels: 0, }, ] }, { title: "SILK BEDDING SET", url: "\/collections\/silk-bedding-set", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Sheet Sets", url: "\/collections\/silk-sheet-set", target: "_blank", levels: 0, }, { title: "Silk Duvet Cover Sets", url: "\/collections\/silk-duvet-cover-set", target: "_blank", levels: 0, }, ] }, { title: "SILK PILLOWCASES", url: "\/collections\/silk-pillowcase", target: "_blank", levels: 1, cover: '
', children: [ { title: "Silk Must-Have Pillowcases", url: "\/collections\/silk-must-have-pillowcases", target: "_blank", levels: 0, }, { title: "Silk Solid Pillowcases", url: "\/collections\/solid-pillowcase", target: "_blank", levels: 0, }, { title: "Silk Printed Pillowcases", url: "\/collections\/printed-silk-pillowcase", target: "_blank", levels: 0, }, { title: "Silk Kids Pillowcases", url: "\/collections\/kids-silk-pillowcase", target: "_blank", levels: 0, }, { title: "Silk European Pillowcases", url: "\/collections\/silk-european-pillowcases", target: "_blank", levels: 0, }, { title: "Silk Shams", url: "\/collections\/silk-shams", target: "_blank", levels: 0, }, ] }, { title: "SILK BASICS", url: "\/collections\/silk-bed-basics", target: "_blank", levels: 1, cover: '', children: [ { title: "Silk Pillow", url: "\/collections\/silk-pillow", target: "_blank", levels: 0, }, { title: "Silk Comforter", url: "\/collections\/silk-comforter", target: "_blank", levels: 0, }, ] }, { title: "FEATURED", url: "\/collections\/silk-bedding", target: "_blank", levels: 1, cover: '
', children: [ { title: "Classic", url: "\/collections\/silk-classic-bedding", target: "_blank", levels: 0, }, { title: "Organic & Eco-Friendly", url: "\/collections\/organic-eco-friendly-silk-bedding", target: "_blank", levels: 0, }, { title: "Luxury", url: "\/collections\/luxury-silk-bedding", target: "_blank", levels: 0, }, { title: "19 Momme", url: "\/collections\/19-momme-silk-bedding", target: "_blank", levels: 0, }, { title: "22 Momme", url: "\/collections\/silk-22-momme-bedding", target: "_blank", levels: 0, }, { title: "25 Momme", url: "\/collections\/silk-25-momme-bedding", target: "_blank", levels: 0, }, ] }, { title: "RESOURCES", url: "\/collections\/silk-bedding-best-seller", target: "_blank", levels: 1, cover: '', children: [ { title: "Gifts Of Sleep Wellness", url: "\/blog\/gifts-of-sleep-wellness", target: "_blank", levels: 0, }, { title: "Silk Sheets Guide", url: "\/blog\/something-you-need-to-know-before-you-buy-new-sheets", target: "_blank", levels: 0, }, { title: "Silk Comforter Guide", url: "\/blog\/silk-comforter-guide", target: "_blank", levels: 0, }, { title: "Silk Pillowcase Guide", url: "\/blog\/picking-the-best-silk-pillowcases-buyers-guide", target: "_blank", levels: 0, }, { title: "Sleep Better Guide", url: "\/blog\/the-guide-to-buying-silk-bedding", target: "_blank", levels: 0, }, ] }, ] }, { id: 69243503, title: "GIFT", url: "\/pages\/silk-gifts-guide", target: "_blank", levels: 2, product0: { id: (null) }, children: [ { title: "FOR WOMEN", url: "\/pages\/silk-for-women-sale", target: "_blank", levels: 1, cover: '', children: [ { title: "Best Seller For Her", url: "\/collections\/sale-for-women", target: "_blank", levels: 0, }, { title: "Silk Sleepwear", url: "\/collections\/womens-silk-sleepwear", target: "_blank", levels: 0, }, { title: "Monogrammed Silk Sleepwear", url: "\/pages\/customized", target: "_blank", levels: 0, }, { title: "Silk Scarf", url: "\/collections\/silk-scarf", target: "_blank", levels: 0, }, { title: "Silk Blouse & Shirt", url: "\/collections\/silk-blouse-shirt", target: "_blank", levels: 0, }, { title: "Silk Accessories", url: "\/collections\/silk-accessories-for-women", target: "_blank", levels: 0, }, { title: "Silk Panties", url: "\/collections\/silk-panties", target: "_blank", levels: 0, }, { title: "Silk Bra", url: "\/collections\/silk-bra", target: "_blank", levels: 0, }, ] }, { title: "FOR MEN", url: "\/collections\/gifts-for-men", target: "_blank", levels: 1, cover: '', children: [ { title: "Best Seller For Him", url: "\/collections\/sale-for-men", target: "_blank", levels: 0, }, { title: "Silk Sleepwear", url: "\/collections\/mens-silk-sleepwear", target: "_blank", levels: 0, }, { title: "Monogrammed Silk Sleepwear", url: "\/pages\/customized", target: "_blank", levels: 0, }, { title: "Silk Ties", url: "\/collections\/silk-ties", target: "_blank", levels: 0, }, { title: "Silk Scarf", url: "\/collections\/mens-silk-scarf", target: "_blank", levels: 0, }, { title: "Silk Shirt", url: "\/collections\/silk-shirt-mens", target: "_blank", levels: 0, }, { title: "Silk Underwear", url: "\/collections\/mens-silk-underwear", target: "_blank", levels: 0, }, ] }, { title: "FOR KIDS", url: "\/collections\/silk-apparel-for-kid", target: "_blank", levels: 1, cover: '', children: [ { title: "Best Seller For Kids", url: "\/collections\/silk-gifts-for-kid", target: "_blank", levels: 0, }, { title: "Silk Pillowcase", url: "\/collections\/kids-silk-pillowcase", target: "_blank", levels: 0, }, { title: "Silk Bedding", url: "\/collections\/silk-bedding-for-kid", target: "_blank", levels: 0, }, ] }, { title: "FOR FAMILY", url: "\/collections\/silk-bedding", target: "_blank", levels: 1, cover: '
', children: [ { title: "Best Seller For Family", url: "\/collections\/silk-bedding-best-seller", target: "_blank", levels: 0, }, { title: "For Parents", url: "\/collections\/silk-gifts-for-parents", target: "_blank", levels: 0, }, ] }, { title: "GIFT CARD", url: "\/products\/egift-card-email-delivery", target: "_blank", levels: 0, cover: '', children: [ ] }, { title: "GIFT GUIDE", url: "\/pages\/silk-gifts-guide", target: "_blank", levels: 0, cover: '', children: [ ] }, ] }, { id: 69243557, title: "FEATURED", url: "\/collections\/new", target: "_blank", levels: 1, product0: { id: ("2f59c1b5-34ff-41c8-9dfd-070fef9c7067") }, children: [ { title: "New Arrival", url: "\/collections\/new-arrivals-c78o", target: "_blank", levels: 0, cover: '', children: [ ] }, { title: "Best Seller", url: "\/collections\/best-seller-2023", target: "_blank", levels: 0, cover: '', children: [ ] }, { title: "Outlets", url: "\/pages\/clearance-sale", target: "_blank", levels: 0, cover: '', children: [ ] }, ] }, ].slice(offset); linkList = formatLinks(linkList); const hasChild = linkList.some(link => !!(link.children && link.children.length || link.product0.id)); for (const item of linkList) { if (item.children?.length > 0) { item.active = 'active'; break; } } return `
${link.title}
${link.tag.label}
${second_link.cover}
${second_link.title}
${second_link.tag.label}
${third_links.title}
${third_links.tag.label}
${link.title}
${link.tag.label}
` })()}
Log in
Create an account
${data.data && data.data.count}
${(function(){ if (data === undefined || typeof data !== 'string' || data == '') return '
'; const keyword = encodeURIComponent(data); return `
View more
Your search for '${data}' did not yield any results.
` })()}
WOMEN
SILK CLOTHING
Silk Tops
Silk Tanks & Camisoles
Silk Blouses & Shirts
Silk T-shirts
Silk Dresses
Silk Pants
Silk Skirts
Silk Outwears
Silk Two-piece Set
Plus Size
CASHMERE
Cashmere Sweater
Cashmere Hoodie
Cashmere Cardigan
Cashmere Coat
Cashmere Pants
Cashmere Dress
Cashmere Thermal Underwear
Cashmere Robe
Cashmere Set
Cashmere Beanie
Cashmere Scarf
Cashmere Accessories
WOOL
Wool Tops
Wool Cardigans
Wool Coats
Wool Bottoms
LINEN
Linen Tops
Linen Shirt & Blouse
Linen T-shirts
Linen Camisole & Tank
Linen Dresses
Linen Pants
Linen Shorts
Linen Skirt
Linen Homewears
Linen Outwear
SILK LOUNGEWEAR & SLEEPWEAR
Silk Pajamas
Silk Nightgown
Silk Robe & Robe Set
Silk Camisole Set
Silk Travel Set
Embroidered & Personalized
Plus Size
COUPLE
SILK LINGERIE
Silk Bra & Bralette
Silk Panties
Silk Bra & Panties Set
Silk Socks
Silk Camisole
Silk Leggings
Silk Thermal
SILK ACCESSORIES
Silk Scarf
Silk Scrunchie
Silk Sleep Cap
Silk Eye Mask
Silk Face Covering
Silk Must-Haves For Travel
FEATURED
Plus Size
Embroidered & Personalized
Silk Velvet
Down Jackets
Classic
Luxury
Organic & Eco-Friendly
MEN
SILK CLOTHING
Silk Shirts & T-shirts
Silk Beachwear
Silk Bottom For Men
CASHMERE
Cashmere Sweater
Cashmere Hoodie
Cashmere Cardigan
Cashmere Pants
Cashmere Thermal Underwear
WOOL
Wool Tops
Wool Cardigan
Wool Coats
LINEN
Linen Tops
Linen Shirts
Linen T-shirts
Linen Pants
Linen Shorts
Linen Blazers
SILK LOUNGEWEAR & SLEEPWEAR
Silk Pajamas
Silk Robe
Silk Homewear
Couple
Embroidered & Personalized
SILK LINGERIE
Silk T-shirts
Silk Underwear & Boxers
Silk Socks
Silk Thermal
SILK ACCESSORIES
Silk Scarf
Silk Ties
Silk Must-Haves For Travel
FEATURED
Embroidered & Personalized
Cashmere
Wool
No-Iron
KID
SILK LOUNGEWEAR & SLEEPWEAR
Baby
Girl
Boy
SILK APPAREL
Baby
Girl
Boy
CASHMERE
LINEN COLLECTION
Linen Tops
Linen Dresses
Linen Pants
SILK BEDDING
Silk Quilt
Silk Pillowcase
Silk Blanket
BEDDING
SILK BED LINENS
Silk Fitted Sheets
Silk Flat Sheets
Silk Duvet Covers
SILK BEDDING SET
Silk Sheet Sets
Silk Duvet Cover Sets
SILK PILLOWCASES
Silk Must-Have Pillowcases
Silk Solid Pillowcases
Silk Printed Pillowcases
Silk Kids Pillowcases
Silk European Pillowcases
Silk Shams
SILK BASICS
Silk Pillow
Silk Comforter
FEATURED
Classic
Organic & Eco-Friendly
Luxury
19 Momme
22 Momme
25 Momme
RESOURCES
Gifts Of Sleep Wellness
Silk Sheets Guide
Silk Comforter Guide
Silk Pillowcase Guide
Sleep Better Guide
GIFT
FOR WOMEN
Best Seller For Her
Silk Sleepwear
Monogrammed Silk Sleepwear
Silk Scarf
Silk Blouse & Shirt
Silk Accessories
Silk Panties
Silk Bra
FOR MEN
Best Seller For Him
Silk Sleepwear
Monogrammed Silk Sleepwear
Silk Ties
Silk Scarf
Silk Shirt
Silk Underwear
FOR KIDS
Best Seller For Kids
Silk Pillowcase
Silk Bedding
FOR FAMILY
Best Seller For Family
For Parents
GIFT CARD
GIFT GUIDE
FEATURED
New Arrival
Best Seller
Outlets
Log in
(function(){ let w = window.innerWidth; function setHeaderCssVar() { const headerEle = document.getElementById('shoplaza-section-header'); if(!headerEle){ return }; document.body.style.setProperty('--window-height', `${window.innerHeight}px`); document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`); const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide'); if (mdScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`); } const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide'); if (pcScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`); } } function handlResize() { if(w == window.innerWidth){return}; w = window.innerWidth; setHeaderCssVar(); }; function init(){ setHeaderCssVar(); window.removeEventListener('resize', window._theme_header_listener) window._theme_header_listener = handlResize; window.addEventListener('resize', window._theme_header_listener); } init(); })();
${function() { return `
0 ? (data.index - 1) : (data.total - 1)},animate=true,direct=-1);" data-type="prev">
` }()}
Our Picked For Multiple Scences
Travel
Sports
Work
Travel
Sports
Work
Silk Clothing For Travel
Silk Shirt Simple White Back Zipper Style
$209.00
Silk Sun Protection Top Driving Cloak Style
$35.00
+5
Silk Pants Casual Men's Summer Trousers
$105.00
Save 17%
Save 17%
Silk Blouse French Cap Sleeve Fashion Top
$99.00
$119.00
+7
Save 38%
Save 38%
Silk Dress Luxury Pearl Like Style
$99.00
$159.00
+1
Save 22%
Save 22%
Silk Tank For Women
from
$109.00
$139.00
+9
Save 30%
Save 30%
Blue Mulberry Silk Beach Pants
$139.00
$199.00
Save 30%
Save 30%
Black Irregular Pattern Silk Beach Pants
$139.00
$199.00
Silk Shirt Simple White Back Zipper Style
$209.00
Silk Sun Protection Top Driving Cloak Style
$35.00
+5
Silk Pants Casual Men's Summer Trousers
$105.00
Save 17%
Save 17%
Silk Blouse French Cap Sleeve Fashion Top
$99.00
$119.00
+7
View more
Silk Clothing Sports
Sports Solid Seamless Silk Bra
$29.95
Ladies Silk Leggings Solid Lacey Style
$29.95
Silk Leggings Solid Breathable Safety Pants
$15.95
Save 23%
Save 23%
Silk Camisole Lacey Ribbed Style
$19.95
$25.95
Save 23%
Save 23%
Silk Camisole Lacey Loose Soft Style
$19.95
$25.95
+2
Save 19%
Save 19%
Silk Camisole Knitted Solid Top
$12.95
$15.95
+2
Save 20%
Save 20%
Silk Camisole Thin Simple Sleeveless Top
$39.00
$49.00
+2
Sports Silk Bra Seamless Sexy Style
$22.95
Sports Solid Seamless Silk Bra
$29.95
Ladies Silk Leggings Solid Lacey Style
$29.95
Silk Leggings Solid Breathable Safety Pants
$15.95
Save 23%
Save 23%
Silk Camisole Lacey Ribbed Style
$19.95
$25.95
View more
Women's Silk Apparel For Work
Save 40%
Save 40%
22 MM V Neck Casual Silk Blouse Shirt For Women
from
$119.00
$199.00
Save 40%
Save 40%
High Waist Silk Wide-leg Pants
$119.00
$199.00
Save 40%
Save 40%
Slim-fitting Silk Straight-leg Pants
$119.00
$199.00
Save 40%
Save 40%
High-waisted Slim-fitting Silk Pants
$119.00
$199.00
Save 30%
Save 30%
Women's Silk Wide-leg Suit Pants
$139.00
$199.00
Save 40%
Save 40%
Silk Ankle Harlan Pants
$119.00
$199.00
Save 40%
Save 40%
Lace Up Silk Harlan Pants
$119.00
$199.00
Save 40%
Save 40%
Women's Silk Small Foot Pants
$119.00
$199.00
Save 40%
Save 40%
22 MM V Neck Casual Silk Blouse Shirt For Women
from
$119.00
$199.00
Save 40%
Save 40%
High Waist Silk Wide-leg Pants
$119.00
$199.00
Save 40%
Save 40%
Slim-fitting Silk Straight-leg Pants
$119.00
$199.00
Save 40%
Save 40%
High-waisted Slim-fitting Silk Pants
$119.00
$199.00
View more
${function() { return `
0 ? (data.index - 1) : (data.total - 1)},animate=true,direct=-1);" data-type="prev">
` }()}
${function() { return `
0 ? (data.index - 1) : (data.total - 1)},animate=true,direct=-1);" data-type="prev">
${(data.index + 1) }/${data.total}
` }()}
${function() { return `
0 ? (data.index - 1) : (data.total - 1)},animate=true,direct=-1);" data-type="prev">
${(data.index + 1) }/${data.total}
` }()}
(function() { const STATUS = { LOADING: 'loading', FINISH: 'finish' }; const RESULT = { EMPTY: 'data-empty' }; class SPZCustomCartSku extends SPZ.BaseElement { renderData = []; /** * add to cart reselect item, and delete process: * 1. record reselect id before show reselect modal * 2. add to cart success, mark `needDeleteReselectRecord` to true * 3. close reselect modal / drawer * 4. spz-cart re-render, triggered mounted event * 5. call refresh */ // mark delete reselect id recordReselectId = null; // mark should delete reselect record after spz-cart mounted event needDeleteReselectRecord = false; refreshLock = false; addToCartSuccess = false; // cache paused refresh data refreshDataCache = []; // cache similar products data, for manual add to cart similarData = []; constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); this.action_ = SPZServices.actionServiceForDoc(this.element); } setupAction_() { this.registerAction('refresh', (invocation) => { const data = invocation && invocation.args && invocation.args.data || {}; this.refresh(data); }); this.registerAction('deleteReselect', SPZCore.Types.debounce( this.win, (invocation) => { this.deleteReselect(invocation?.args?.id); }, 200 )); this.registerAction('deleteInvalid', SPZCore.Types.debounce( this.win, (invocation) => { this.deleteInvalid(invocation?.args?.id); }, 200 )); this.registerAction('setReselectRecordId', (invocation) => { this.setReselectRecordId(invocation?.args?.id); }); this.registerAction('clearNeedReselectRecord', (invocation) => { this.clearNeedReselectRecord(); }); this.registerAction('registerDeleteReselectTask', (invocation) => { this.registerDeleteReselectTask(invocation?.args?.data); }); this.registerAction('lockRefresh', (invocation) => { this.lockRefresh(); }); this.registerAction('releaseRefreshLock', (invocation) => { this.releaseRefreshLock(); }); this.registerAction('manualAddToCart', (invocation) => { this.manualAddToCart(invocation?.args?.id); }); this.registerAction('syncSimilarData', (invocation) => { this.syncSimilarData(invocation?.args?.data); }); // DEBUG this.registerAction('log', (invocation) => { const data = invocation && invocation.args && invocation.args.data || {}; console.log('log', invocation); }); } buildCallback() { this.setupAction_(); } isLayoutSupported(layout) { return true; } /** * 数据去重 * @param {Array} data */ uniq_(data) { const result = []; for(let i = 0; i < data.length; i++) { if(!result.includes(data[i])) { result.push(data[i]); } } return result; } checkRefreshLock() { if (this.refreshLock) { return false; } return true; } setLoading(isLoading) { SPZCore.Dom.toggleAttribute(this.element, STATUS.LOADING, isLoading); SPZCore.Dom.toggleAttribute(this.element, STATUS.FINISH, !isLoading); } setDataResult(data) { const isDataEmpty = !data.reselectSkus.length && !data.invalidSkus.length && !data.line_items.length; SPZCore.Dom.toggleAttribute(this.element, RESULT.EMPTY, isDataEmpty); } // 存在多次请求顺序问题 async refresh(_data) { // 接口失败时返回数据不为对象 if (!(typeof _data === 'object' && _data.line_items && _data.line_items.length > 0)) { const newData = { line_items: [], reselectSkus: [], invalidSkus: [], displayInvalidSkus: [] }; this.trigger_('refreshError', newData); this.setLoading(false); return; } if (!this.checkRefreshLock()) { this.setRefreshCache(_data); return; } this.setLoading(true); let data = _data; if (this.needDeleteReselectRecord && this.recordReselectId) { let hasError = false; try { data = await this.deleteReselectRecordBeforeRefresh(_data); } catch (e) { hasError = true; console.error(e); const newData = { ...data, reselectSkus: [], invalidSkus: [], displayInvalidSkus: [] }; this.trigger_('refreshError', newData); this.setLoading(false); this.setDataResult(newData); return; } this.needDeleteReselectRecord = false; if (hasError) { return; } } // 获取失效商品 const invisibleItems = data.ineffectives; // 获取失效商品内仅售罄商品的sku const soldOutItems = invisibleItems.filter(item => item.reason === "line_item_sold_out"); // 通过失效 sku 获取 spu, 注意去重 const soldOutSpuIds = this.uniq_(soldOutItems.map(item => item.product_id)); const querySpuIds = soldOutSpuIds.map(spuId => `ids[]=${spuId}`).join('&'); if (!soldOutSpuIds.length) { const newData = { ...data, reselectSkus: [], invalidSkus: [], displayInvalidSkus: [] }; this.trigger_('refreshSuccess', newData); this.renderData = newData; this.setLoading(false); this.setDataResult(newData); return; } // 请求 spu 下其他 sku 库存 this.xhr_.fetchJson(`/api/product/list?limit=${soldOutSpuIds.length}&${querySpuIds}`) .then(res => { const reselectSkus = []; const invalidSkus = []; // spu 维度展示 const displayInvalidSkus = []; res.data.list.forEach(product => { // spu 匹配, 存在多 sku 情况 const soldOutSkus = soldOutItems.filter(item => item.product_id === product.id); if (!soldOutSkus.length) { return; } // 通过失效 sku 获取 spu 下其他 sku 库存, 存在其他可用库存时标记为 "Reselect" 按钮可用 //const allowReselect = product.variants // .filter(variant => variant.option1 === soldOutProduct.variant.option1 && variant.option2 === soldOutProduct.variant.option2 && variant.option3 === soldOutProduct.variant.option3) // .some(variant => variant.available); // 查询售罄 sku 对应商品是否可加购, 标记为 Reselect 可用项 if (product.available) { reselectSkus.push(...soldOutSkus); // 若商品不可用(全部 sku 售罄), 归纳到失效商品列表 } else { invalidSkus.push(...soldOutSkus); // spu 维度, 仅添加一项 sku displayInvalidSkus.push(soldOutSkus[0]); } }); const newData = { ...data, reselectSkus, invalidSkus, displayInvalidSkus }; this.trigger_('refreshSuccess', newData); this.renderData = newData; this.setLoading(false); this.setDataResult(newData); }) .catch(err => { this.setLoading(false); console.error(err); this.trigger_('refreshError', data); }).finally(() => { }); } async deleteReselect(id, ignoreEmit) { if (!id) { return; } const targetSku = this.renderData.reselectSkus.find(item => item.id === id); try { const res = await this.xhr_.fetchJson(`/api/cart/${targetSku.variant_id}`, { method: 'DELETE', body: { id: targetSku.id, product_id: targetSku.product_id, variant_id: targetSku.variant_id, } }); const newData = { ...this.renderData, reselectSkus: this.renderData.reselectSkus.filter(item => item.id !== id), }; this.renderData = newData; !ignoreEmit && this.trigger_('deleteSuccess', newData); } catch (err) { console.error(err); !ignoreEmit && this.trigger_('deleteError', err); } } deleteInvalid(id) { if (!id) { return; } const targetSku = this.renderData.invalidSkus.find(item => item.id === id); this.xhr_.fetchJson(`/api/cart/${targetSku.variant_id}`, { method: 'DELETE', body: { id: targetSku.id, product_id: targetSku.product_id, variant_id: targetSku.variant_id, } }) .then(res => { const newData = { ...this.renderData, invalidSkus: this.renderData.invalidSkus.filter(item => item.id !== id), displayInvalidSkus: this.renderData.displayInvalidSkus.filter(item => item.id !== id), }; this.trigger_('deleteSuccess', newData); this.renderData = newData; }) .catch(err => { console.error(err); this.trigger_('deleteError', err); }); } // record reselect sku id before show reselect modal setReselectRecordId(id) { if (!id) { return; } this.recordReselectId = id; } async deleteReselectRecordBeforeRefresh(data) { if (!this.recordReselectId) { return; } await this.deleteReselect(this.recordReselectId, true); return { ...data, ineffectives: data.ineffectives.filter(item => item.id !== this.recordReselectId) } } clearNeedReselectRecord() { this.needDeleteReselectRecord = false; } registerDeleteReselectTask(productData) { const targetSku = this.renderData.reselectSkus.find(item => item.id === this.recordReselectId); if (targetSku?.variant_id && productData?.variant.id) { if (targetSku.variant_id === productData?.variant.id) { this.needDeleteReselectRecord = false; return; } } this.needDeleteReselectRecord = true; } // pause cart refresh(trigger by similar products) lockRefresh() { if (this.refreshLock) { return; } this.refreshLock = true; } releaseRefreshLock() { if (!this.refreshLock) { return; } this.refreshLock = false; this.refreshWithCache(); } // direct add_to_cart(trigger by similar products) async manualAddToCart(id) { const target = this.similarData.find(item => item.id === id); this.lockRefresh(); try { const res = await this.xhr_.fetchJson(`/api/cart`, { method: 'POST', body: { note: '', product_id: target.id, quantity: '1', variant_id: target.variants[0].id, refer_info: { source: 'add_to_cart' } } }); const newCartItems = res.data.items; this.setRefreshCache(newCartItems, true); } catch (err) { console.error(err); } } syncSimilarData(data) { this.similarData = data.data; } setRefreshCache(data, patch) { if (patch) { this.refreshDataCache = { ...this.refreshDataCache, line_items: [...this.refreshDataCache.line_items, ...data] }; } else { this.refreshDataCache = data; } } refreshWithCache() { this.refresh(this.refreshDataCache); } mountCallback() { } unmountCallback() { } /** * trigger event * @param {Object} data */ trigger_(name, data) { const event = SPZUtils.Event.create(this.win, `spz-custom-cart-sku.${name}`, { data, }); this.action_.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-cart-sku', SPZCustomCartSku); }())
(function () { class SPZCustomCartTrack extends SPZ.BaseElement { constructor(element) { super(element); this.action_ = SPZServices.actionServiceForDoc(this.element); } isLayoutSupported(layout) { return true; } buildCallback() { this.setupAction_(); } hash(val) { const hashKey = Object.keys(val).sort((a, b) => a - b).reduce((acc, k) => { acc += `{'${k}':'${val[k]}'}`; return acc; }, ''); return hashKey; } trackExtra(key, value) { console.log('trackExtra...', key, value); if (!window.sa) { return; } const hashKey = this.hash(value); let hasExtraInfo = false; if (window.sa.eventInfo && window.sa.eventInfo[key] && window.sa.eventInfo[key].extra_properties) { hasExtraInfo = window.sa.eventInfo[key].extra_properties.some(p => { return hashKey === this.hash(p); }); } if (hasExtraInfo) { return; } window.sa && window.sa.registerExtraInfo(key, value); } delExtraTrack(key, value) { const hashKey = this.hash(value); if (window.sa.eventInfo && window.sa.eventInfo[key] && window.sa.eventInfo[key].extra_properties) { window.sa.eventInfo[key].extra_properties = window.sa.eventInfo[key].extra_properties.filter(p => hashKey !== this.hash(p)); } } track(key, value) { console.log('tracking...', key, value); window.sa && window.sa.track(key, value); } setupAction_() { this.registerAction('registerReselectAtc', () => { this.trackExtra('add_to_cart', { function_name: 'Farida', action_type: 'reselect' }); }); this.registerAction('clearReselectAtc', () => { this.delExtraTrack('add_to_cart', { function_name: 'Farida', action_type: 'reselect' }); }); this.registerAction('registerSimilarAtc', () => { this.trackExtra('add_to_cart', { function_name: 'Farida', action_type: 'similar_product' }); }); this.registerAction('clearSimilarAtc', () => { this.delExtraTrack('add_to_cart', { function_name: 'Farida', action_type: 'similar_product' }); }); const clickParams = { business_type: 'product_plugin', event_name: 'function_click', function_name: 'Farida', plugin_name: 'Farida', template_name: 'cart', template_type: '13', module: 'online_store', module_type: 'online_store', tab_name: '', card_name: '', event_developer: 'ccbken', event_type: 'click', }; this.registerAction('trackDelReselect', () => { this.track('function_click', { ...clickParams, event_info: JSON.stringify({ action_type: 'cart_delete', element_type: 'sku' }) }); }); this.registerAction('trackClickReselect', () => { this.track('function_click', { ...clickParams, event_info: JSON.stringify({ action_type: 'reselect', element_type: 'sku' }) }); }); this.registerAction('trackDelSimilar', () => { this.track('function_click', { ...clickParams, event_info: JSON.stringify({ action_type: 'cart_delete', element_type: 'spu' }) }); }); this.registerAction('trackClickSimilar', () => { this.track('function_click', { ...clickParams, event_info: JSON.stringify({ action_type: 'reselect', element_type: 'spu' }) }); }); this.registerAction('trackOpenSimilar', () => { this.track('function_expose', { ...clickParams, event_name: 'function_expose', event_type: 'expose', event_info: JSON.stringify({ popup_name: 'farida_product_popup' }) }); }); } } SPZ.defineElement('spz-custom-cart-track', SPZCustomCartTrack); }())
Cart ${function() { const show = data && data.line_items && data.line_items.length > 0; const count = show ? data.line_items.reduce((acc, line) => { acc += parseInt(line.quantity); return acc; }, 0) : 0; return `
(${count})
`; }()}
Invalid
(${data.invalidSkus.length})
Sold out
${item.product_title}
${item.options.map(option => option.value).join('/')}
${propertie.name}/${propertie.isImage ? `
View image
` : propertie.value}
Free gift
Mixed Lot
${item.item_text}
Similar products
Similar products
${item.product_title}
${item.options.map(option => option.value).join('/')}
${propertie.name}/${propertie.isImage ? `
View image
` : propertie.value}
Free gift
Mixed Lot
*${item.quantity}
${item.item_text}
${discount_item.title}
(-
)
${item.product_title}
${item.options.map(option => option.value).join('/')}
${propertie.name}/${propertie.isImage ? `
View image
` : propertie.value}
Free gift
Mixed Lot
${item.item_text}
Reselect
Reselect product specialfications
Reselect
Reselect product specialfications
Your shopping cart is empty
Continue shopping
${(function(){ var total_price = data.total_price; var postageFreeAmount = 59; var freeAmount = postageFreeAmount - total_price; var isFreeShipping = freeAmount <= 0; var freeShippingBg = !isFreeShipping?'#FFF7EE':'#E5FFE2'; var rate = Math.min(total_price / postageFreeAmount * 100, 100).toFixed(2); const textArray = ("Spend {{ amount }} more and get free shipping!").split(/\{\{\s*amount\s*\}\}/); const textArrayHtml = textArray.map((text, index) => { if (index == 0) { return `
${text}
`; } return `
${text}
`; }).join(''); return `
${textArrayHtml}
You've got free shipping
${rate}%
` })()}
Total:
${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}
Check out
Taxes and shipping cost are calculated at checkout
${(function(){ var total_price = data.total_price; var postageFreeAmount = 59; var freeAmount = postageFreeAmount - total_price; var isFreeShipping = freeAmount <= 0; var freeShippingBg = !isFreeShipping?'#FFF7EE':'#E5FFE2'; var rate = Math.min(total_price / postageFreeAmount * 100, 100).toFixed(2); const textArray = ("Spend {{ amount }} more and get free shipping!").split(/\{\{\s*amount\s*\}\}/); const textArrayHtml = textArray.map((text, index) => { if (index == 0) { return `
${text}
`; } return `
${text}
`; }).join(''); return `
${textArrayHtml}
You've got free shipping
${rate}%
` })()}
${data.invalid_msg}
Total:
${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}:
-
Check out
${data.invalid_msg}
Check out
Taxes and shipping cost are calculated at checkout
Subtotal:
Save:
-
${discount_application.title}:
-
Total:
Check out
Taxes and shipping cost are calculated at checkout
const summaryStickyRender = document.querySelector('#cart-drawer-summary-sticky-render'); if (summaryStickyRender) { document.body.style.setProperty('--cart-drawer-summary-sticky-height', summaryStickyRender.clientHeight + 'px'); }
${function() { const variantData = data.variant || data.product.variants.find(v => v.available) || data.product.variants[0]; const saveType = null; const productLabelDiscountOn = null; return `
${saveType == 'percentage' ? `-${variantData.off_ratio}%` : `
-
` }
`; }()}
See detail
${function() { let variantImageShowed = false; const currentProduct = data.product; // fix default selected variant let selectedValues = data.selectedValues; if (Object.keys(data.selectedValues.length === 0)) { const selectedVariant = currentProduct.variants.find(v => v.available) || currentProduct.variants[0]; if (selectedVariant) { selectedVariant.options.forEach((option, idx) => { if (!selectedValues[option.name]) { selectedValues[option.name] = []; } if (selectedValues[option.name].indexOf(option.value) === -1) { selectedValues[option.name].push(option.value); } }); } } return (currentProduct.options || []).map((option, index) => { const optionName = option.name || ''; const position = `option${index + 1}`; let isThumbImage = false; if (currentProduct.need_variant_image && !variantImageShowed) { const variantNames = ["color"] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i].toLowerCase(); if (name === optionName.toLowerCase()) { isThumbImage = true; variantImageShowed = true; } } } const variantType = "dropdown"; const thumbStyle = "image_with_text"; return `
${optionName}:
${option.values.map((value, idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = currentProduct.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return `
${value}
` }).join('')}
${optionName}
${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `
${value}
` }).join('')}
` }).join(''); }()}
${data.originData && data.originData.value || data.value}
${data.index + 1}/${data.total}
${Array(data.total).fill(0).map((num, index) => { return `
`; }).join('')}
${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants[0]); const productVariant = null; const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled && wholesale_price.length > 0) { let wholesaleIndex = wholesale_price.findIndex(item => { return item.min_quantity > qty; }); if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `
` }else { const price = variantData && variantData.price; return price != undefined ? `
` : '
'; } }()}
${function() { const selectedVariant = data.variant; const isSoldOut = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)); const statusLan = isSoldOut ? "Sold out" : "Add to cart"; return `
${statusLan}
`; }()}
const summaryStickyRender = document.querySelector('#cart-reselect-drawer-summary-sticky-render'); if (summaryStickyRender) { document.body.style.setProperty('--cart-reselect-drawer-summary-sticky-height', summaryStickyRender.clientHeight + 'px'); }
Back
${function(){ const productData = data.product; let product_change_event = '', mouse_over_event = ' '; mouse_out_event = ''; const product_options = productData.options.filter(Boolean) || []; for (let opt of product_options) { product_change_event = product_change_event + `cart-reselect-drawer-selected-variant-${opt.name}.rerender(data=event.selectedValues.${opt.name});`; mouse_out_event = mouse_out_event + `cart-reselect-drawer-selected-variant-${opt.name}.rerender(data=event.selectData.${opt.name});`; mouse_over_event = mouse_over_event + `@${opt.name}Mouseover="cart-reselect-drawer-selected-variant-${opt.name}.rerender(data=event);"`; } const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ? "Sold out" : "Add to cart"; const mobSelectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; const mobInitialSlideIndex = productData.images.findIndex((item) => item.src === selectedVariant.image.src); const mobImages = productData.images; const mobImageSize = productData.images.length; const stickyEvent = "cart-reselect-drawer-summary-sticky-render.toggleClass(class='visible', force=false);cart-reselect-drawer-summary-sticky-compensation-container.toggleClass(class='visible', force=false);cart-reselect-drawer-observer.restart();cart-reselect-drawer-summary-sticky-render.rerender(data=event);"; return `