SKU: BL2310196855
Category: Suit
Thickness:conventional
Elasticity: non stretchy
Scenes:Daily Holiday Going Out
Material: Polyester
Style:Casual/Retro
Size Chart:
Size Chest Top Length Pants Length
Here are what our customers say.
Newest
Most liked
Highest ratings
Lowest ratings
Wow you reached the bottom
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}
` })()}
Submit Comments Anonymously
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 { resultkey = decodeURIComponent(value); } catch (e) { resultkey = 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); The review would not show in product details on storefront since it does not support to.
${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 + `quick-shop-selected-variant-${opt.name}.rerender(data=event.selectedValues.${opt.name});`; mouse_out_event = mouse_out_event + `quick-shop-selected-variant-${opt.name}.rerender(data=event.selectData.${opt.name});`; mouse_over_event = mouse_over_event + `@${opt.name}Mouseover="quick-shop-selected-variant-${opt.name}.rerender(data=event);"`; } const selectedVariant = productData.variants.find(v => v.available) || productData.variants0; const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ? "Sold out" : "Add to cart"; return ` ` }()} ${function(){ const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants0); const variantData = currentSelectVariant || defaultVariant || data; const retail_price = variantData.retail_price || 0; return ` ` }()} ${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants0); const productVariant = {"id":"177e2c86-1ec1-453d-a439-6744456dca04"."product_id":"768a10e4-6071-44dc-8863-74df51a4dd3a"."title":"As It-S"."weight_unit":"kg"."inventory_quantity":0."sku":"BL2310196855-As It-S"."barcode":""."position":1."option1":"As It"."option2":"S"."option3":""."note":""."image":{"src":"\/\/img.staticdj.com\/528eefb7e97296c7ebe1cd494bef8121.jpeg"."path":"528eefb7e97296c7ebe1cd494bef8121.jpeg"."width":933."height":1200."alt":""."aspect_ratio":0.7775}."wholesale_price":{"price":49.99."min_quantity":1}."weight":"0.4"."compare_at_price":"0"."price":"49.99"."retail_price":"0"."available":true."url":"\/products\/passionate-floral-printing-two-pieces-set?variant=177e2c86-1ec1-453d-a439-6744456dca04"."available_quantity":999999999."options":{"name":"Color"."value":"As It"}.{"name":"Size"."value":"S"}."off_ratio":0."flashsale_info":."sales":288}; 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_pricewholesaleIndex || ''; return `
` }else { const price = variantData && variantData.price; return price != undefined ? `
` : ' '; } }()} ${function() { let variantImageShowed = false; const currentProduct = data.product; 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 = variantNamesi.toLowerCase(); if (name === optionName.toLowerCase()) { isThumbImage = true; variantImageShowed = true; } } } const variantType = "button"; const thumbStyle = "image_with_text"; return `
${optionName}: ${option.values.map((value. idx) => { const selected = data.selectedValuesoptionName == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = currentProduct.variants; for (let i = 0. len = variants.length; i < len; i++) { const variant = variantsi; if (variantposition == value && thumbImage == null) { thumbImage = variant.image; break; } } } return `
${value}
` }).join('')}
${optionName}
${option.values.map(value => { const selected = data.selectedValuesoptionName == value ? 'selected' : ''; return `${value} ` }).join('')} ` }).join(''); }()}
${data.originData && data.originData.value || data.value} ${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 + `quick-shop-selected-variant-${opt.name}.rerender(data=event.selectedValues.${opt.name});`; mouse_out_event = mouse_out_event + `quick-shop-selected-variant-${opt.name}.rerender(data=event.selectData.${opt.name});`; mouse_over_event = mouse_over_event + `@${opt.name}Mouseover="quick-shop-selected-variant-${opt.name}.rerender(data=event);"`; } const selectedVariant = productData.variants.find(v => v.available) || productData.variants0; const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ? "Sold out" : "Add to cart"; return ` ` }()} ${function(){ const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants0); const variantData = currentSelectVariant || defaultVariant || data; const retail_price = variantData.retail_price || 0; return ` ` }()} ${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants0); const productVariant = {"id":"177e2c86-1ec1-453d-a439-6744456dca04"."product_id":"768a10e4-6071-44dc-8863-74df51a4dd3a"."title":"As It-S"."weight_unit":"kg"."inventory_quantity":0."sku":"BL2310196855-As It-S"."barcode":""."position":1."option1":"As It"."option2":"S"."option3":""."note":""."image":{"src":"\/\/img.staticdj.com\/528eefb7e97296c7ebe1cd494bef8121.jpeg"."path":"528eefb7e97296c7ebe1cd494bef8121.jpeg"."width":933."height":1200."alt":""."aspect_ratio":0.7775}."wholesale_price":{"price":49.99."min_quantity":1}."weight":"0.4"."compare_at_price":"0"."price":"49.99"."retail_price":"0"."available":true."url":"\/products\/passionate-floral-printing-two-pieces-set?variant=177e2c86-1ec1-453d-a439-6744456dca04"."available_quantity":999999999."options":{"name":"Color"."value":"As It"}.{"name":"Size"."value":"S"}."off_ratio":0."flashsale_info":."sales":288}; 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_pricewholesaleIndex || ''; return `
` }else { const price = variantData && variantData.price; return price != undefined ? `
` : ' '; } }()} ${function() { let variantImageShowed = false; const currentProduct = data.product; 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 = variantNamesi.toLowerCase(); if (name === optionName.toLowerCase()) { isThumbImage = true; variantImageShowed = true; } } } const variantType = "button"; const thumbStyle = "image_with_text"; return `
${optionName}: ${option.values.map((value. idx) => { const selected = data.selectedValuesoptionName == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = currentProduct.variants; for (let i = 0. len = variants.length; i < len; i++) { const variant = variantsi; if (variantposition == value && thumbImage == null) { thumbImage = variant.image; break; } } } return `
${value}
` }).join('')}
${optionName}
${option.values.map(value => { const selected = data.selectedValuesoptionName == value ? 'selected' : ''; return `${value} ` }).join('')} ` }).join(''); }()}
${data.originData && data.originData.value || data.value}
const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body. 'data-section-type="product" role="addToCart". data-section-type="product_detail" role="addToCart". data-section-type="product_detail" data-click="addToCart". data-section-type="product" data-click="addToCart"' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }. this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document. 'dj.variantChange'. (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }. 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG. SpzCustomPainterButtonAnimation);