✨ Carport Canopy Summer Anti-UV Wireless Control Umbrella Tent

$44.97
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 = "3bf32d8d-57d7-4b6c-9558-f5aafa854469"; // 促销活动数据 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"); const setting = this.flashsaleData.product_setting; const landingUrl = `/promotions/discount-default/${this.flashsaleData.discount_info.id}`; const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl); if (finalUrl && appDiscountUtils.inProductBody(this.element) && e.target !== cur) { this.win.open(finalUrl, '_blank', 'noopener'); } } // 绑定 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 == 'bf79f770-0049-4f27-9aa5-e363cb98dc05' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "bf79f770-0049-4f27-9aa5-e363cb98dc05", 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);
Color:  Black
Quantity
people are viewing this right now
Shipping
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);

Description

These products are the backlog of dealers in our warehouse, and now it has reached the contract period, and the products have not been processed in time. Our warehouse has the right to sell these stocks at a low price to reduce our losses

  • Shipped from the USA!
  • Buy Safe - Trackable on site: 17track.net
  • Ship Within 48 Hours After Payment!
  • Worldwide Express Shipping is Available!
  • SSL Certificates For 100% Security!

Automatic Car Umbrella Protect Your Car in Hot Summer

✅Material: 210D Oxford Cloth, Aluminum, Fiberglass

✅Size: 189 x 91 x 36 inches

✅Weight: 13.2 pounds

✅Feature: Sunshade Umbrella, anti-UV canopy, remote control, waterproof,windproof

Remote Control to open and fold, send with outdoor stander

Install Car Umbrella Tent on Your Car Roof Only in 30 Seconds, Wind Resistance upto 30mph with Rope Anti-theft Security Insurance
 
Stronger Support Protect your car from hails damage

Multi-purpose use, not only car umbrella, in the yard, outdoor camping, fishing sports, beach canopy, etc

Remote/Automatic/Folding

Anti-theft rope, High quality for maximum security

Designed with six adjustable windproof ropes with hook ensured the stability of the car umbrella, you also can adjust the length of windproof rope to suit different cars. 

Make a huge difference for your car, no longer afraid of hot steering wheel

PU silver coated material, effectively reduce interior temperature maintained at 35 deg f 95 in hot summer, keep you cool and comfortable in car. 

Size Reference

For Outdoor Use, send with stander.  fishing, swimming,yoga,garden, yard, beach and more for you to explore

Send with Outdoor Stander

Fishing Yoga Multi scenes use

Yoga

Parameters

Car canopy package content:

Buyer Show

5-year warranty ensures high quality

✈Worldwide  Shipping✈  _  

A tracking number will always be sent so you can track it every step of the way! Good stuff is worth the wait! 😉
🔒  100% RISK FREE BUY  🔥 
🔥Buy more and save more🔥
Click " Add to Cart " and get yours now! 
 
Our Guarantee:
  • We firmly believe that we have  some of the most innovative products in the world, and  we want to make sure we  back this up with our 90-day risk-free ironclad guarantee.
  • If for any reason you do not have a positive experience, we will do everything to make sure you  are 100% satisfied with your purchase .
  • Buying something online can be a daunting task, so we want you to realize that  buying and trying something is absolutely risk-free.   If you don't like it, no hard feelings, we'll make it right. 
  • We have 24/7/365 ticket and email support. If you need help, please contact us.