XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs
XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs

XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs

Price

$30.00 $15.00
Save $15.00
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '40c7691b-df71-4c08-83c8-65a67a48165c'; this.isRTL = SPZ.win.document.dir === 'rtl'; } 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 = 'f64d11e1-0bc5-4ed7-927f-169c14f381f0'; 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 == 'f64d11e1-0bc5-4ed7-927f-169c14f381f0' && 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(); }); } 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 SpzCustomDiscountFlashsale extends SPZ.BaseElement { constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); this.getFlashSaleApi = "\/api\/storefront\/promotion\/flashsale\/display_setting\/product_setting"; this.timer = null; this.variantId = "40c7691b-df71-4c08-83c8-65a67a48165c"; // 促销活动数据 this.flashsaleData = {} } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // 挂载bind函数 解决this指向问题 this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } mountCallback() { // 获取数据 this.getData(); this.element.onclick = (e) => { const cur = this.win.document.querySelector(".app_discount_flashsale_desc"); if (this.flashsaleData.product_setting.is_redirection && appDiscountUtils.inProductBody(this.element) && e.target !== cur) { this.win.open(`/promotions/discount-default/${this.flashsaleData.discount_info.id}`); } } // 绑定 this.viewport_.onResize(this.resize); // 监听子款式切换,重新渲染 this.win.document.addEventListener('dj.variantChange', this.switchVariant); } unmountCallback() { // 解绑 this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { this.render(); }, 200) } switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == 'f64d11e1-0bc5-4ed7-927f-169c14f381f0' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "f64d11e1-0bc5-4ed7-927f-169c14f381f0", product_type: "default", variant_id: this.variantId } this.flashsaleData = {}; this.win.fetch(this.getFlashSaleApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { this.flashsaleData = await response.json(); this.render(); } else { this.clearDom(); } }).catch(err => { this.clearDom(); }); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } render() { this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), inProductDetail: appDiscountUtils.inProductBody(this.element), flashsaleData: this.flashsaleData, image_domain: this.win.SHOPLAZZA.image_domain, }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) } } SPZ.defineElement('spz-custom-discount-flashsale', SpzCustomDiscountFlashsale);

length

Please select a length

light color

Please select a light color

Quantity

Free worldwide shipping
Free returns
Sustainably made
Secure payments

Illuminate your outdoor gatherings with the XMCOSY+ Smart Patio Lights String with G40 Globe Bulbs.With warm white lighting and smart app and voice control capabilities, these lights offer a stylish and functional lighting solution for any outdoor space.

  • [App & Intelligent Voice Control] XMcosy string lights remote controlled by XMcosy App. You can easy to control it anytime, anywhere. Brightness 1-100% dimmable for greater lighting flexibility and cozy glow. Built-in scenes/customizable scenes with adjustable breathing and flashing lighting-effect. This outdoor patio lights work with Alexa and other intelligent voice assistants.
  • [Weatherproof & Shatterproof] The G40 LED outdoor string lights are certificated weatherproof and shatterproof. ETL listed commercial grade make our patio string lights durable enough to withstand awful weather unrestricted. Hanging string lights for patio, pergola, gazebo, canopy, porch, garden, courtyard, party even indoor like café and bedroom.
  • [Durable & Energy efficient] XMcosy patio lights string use replaceable vintage LED G40 globe bulbs that shine in 2700k warm white. Brighter but more energy & power saving with 35 times the lifespan of incandescent bulbs. Cute and lightweight, perfect outdoor lights for patio.
  • [Connectable String Lights ] This LED string lights able to extend multiple strings within 1 controller to meet the needs of different spaces.(Up to 100 bulbs with 60w adapter; 200 bulbs with 120w adapter)
  • [Smart Indoor/Outdoor Lights] XMcosy globe string lights are ready to provide you with a variety of lighting styles. Add a special, warmly, and pleasant ambiance to your space including indoor and outdoor. Stop wasting energy with the old incandescent version and upgrade to our energy-saving LED version now!

Length

Number of Bulbs

Spare Bulbs

150 ft

75

3

100 ft

50

3

75 ft

34

2

50 ft

25

2

 


Product Name

Smart G40 LED Patio Light

RGBW Smart String Lights

Smart LED String Lights

Acrylic Bulbs Patio Light

Length

50Ft/75Ft/100Ft/150Ft

49Ft/72.5Ft/98Ft/123Ft

49Ft/72.5Ft/98Ft/123Ft

64Ft/123Ft

Number of Light Sources

25/34/50/75

15/22/30/40

15/22/30/40

24/40

Lighting Color

2700k Warm White

RGB & White

2700k Warm White

RGBCWIC

Bulb Type

G40 Plastic Lightweight Bulb

S14 Plastic Edison Bulb

S14 Plastic Edison Bulb

Acrylic Diamond Bulb

WiFi & App Control

Brightness Dimmable

Work with Alexa & Google Home

Weatherproof

Connectable