Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse
Summer Flare Floral Lace Casual Crewneck Pullover Blouse

Summer Flare Floral Lace Casual Crewneck Pullover Blouse

Size
Please select a size
Color
Please select a color
Price
$55.98
$29.99
Save  46%
Quantity

  • Summer Flare Floral Lace Casual Crewneck Pullover Blouse
  • Description:
    Gender: Women, Ladies
    Style: Women Summer Tunic Blouse, Women Chiffon Tops, Women Casual T-Shirt, Long Sleeve Tunic T-shirt
    Pattern Type: Floral Print, Solid Color
    Color: White, Dark Blue, Black, Coffee, Bean Green, Light Blue, Light Purple (Optional)
    Size:S, M, L, XL, 2XL (Follow the size chart to select please)
    Material:100% Polyester
    Neckline: Crew Neck
    Length: Hip Length
    Sleeve Length: Long Sleeve
    Season: Spring, Summer, Fall, Winter
    Occasions: Suitable for Daily Wearing, Casual, Party, Beach, Street, Office, Street, Vacation, Holiday, Travelling, Dating, Working

    Features:
    1. Fabric: Polyester, Lightweight, Soft, and Comfortable to Wear. Giving You a Wonderful Wearing Experience.
    2. Design: Different Colors for You to Choose from. It's a Must-have Blouse for Your Wardrobe in Spring and Summer!
    3. Feature: Women Loose Floral Print Tee Shirt, Women Chiffon Crew Neck Tee Blouse, Women Summer Tunic Tops
    4. Occasion: Perfect for Any Type of Occasions, Such As Daily Life, Casual, Party, Movies, Beach, Street, Home, Vacation, Travelling, Dating, or Working.
    5. Perfect to Be Matched with Skinny Jeans, Denim Shorts, Leggings As You Like.

    Package Content:
    1 x Women Summer Tops (Other Accessories are not included)

    Tips:
    1. Please compare the detail sizes with yours before you buy!!!
    2. Colors may be slightly different depending on computer and monitor settings.
    3. Please allow 1-3cm differences due to manual measurement, thanks. (All measurement in cm and please note 1cm=0.39inch, 1inch=2.54cm)
    • Style - Women T-Shirts, Summer Chiffon Tunic Blouse, Holiday Beach Shirt, Leisure Baggy Tops, Long Sleeve Loungewear T-shirt
    • Material - 100% Polyester. The Fabric is Soft and Breathable, Comfortable for Your Skin
    • Design - Casual Crew Neck T-shirt, Long Sleeve Tops, Loose Tee Shirt, Solid Color Floral Print Blouse, Trendy and Elegant
    • Occasion - Simple and Nature Design Makes This Tops Perfect for Work, Casual, Holiday Party, Picnic, Daily Wear
    • Match - Pair with Skinny Jeans and Ankle Boots for An Easy Ensemble, or with Leggings and Sneakers When You Want A Comfortable and Cozy Outfit
class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent);