🎁Free Shipping on Orders Over $59🎉
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
1 / 13
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light
23% OFF
Fnkus

LED Solar Lamp Path Staircase Outdoor Waterproof Wall Light

$9.99 $12.99
0 sold
Color
BUY MORE SAVE MORE
Qty 999 in stock

With this innovative product, your home will be brighter and more beautiful!

Runs automatically, no battery or electricity needed

undefined

This solar light is a solar-powered fence light for the bright illumination of your outdoor home. It has an elegant warm light.

undefined

The light from the solar light is balanced to give off a natural, warm glow, but enough to illuminate the area without glare.

undefined

undefined

It is made of high-quality ABS material which makes it durable.

undefined

It's waterproof so you don't have to worry about rain or storms.

undefined

Specification

  • Easy to install and requires no wires or adjustments.
  • These solar lights are ideal for illuminating stairs, paths, patios, gardens, and fences, and also for illuminating the closet door, backyard, driveway, garage, and exterior wall.

undefined

🎁It's a perfect gift for your friends&familly!

Invite your friends to visit your garden

undefined

Product Information

undefined

SHIPPING

  • We would greatly appreciate your patience and understanding as we work to meet demand while ensuring that every piece meets our high-quality standards.

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);