Iridescent Dragonfly Garden Stake – Waterproof, Everyday Comfort, Was $40, Save 25%

$29.99
$39.99
-$10.00
/** * 优惠码组件模型类 * 处理优惠码的显示和交互逻辑 */ class SpzCustomDiscountCodeModel extends SPZ.BaseElement { constructor(element) { super(element); // 复制按钮和内容的类名 this.copyBtnClass = "discount_code_btn" this.copyClass = "discount_code_value" } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { // 初始化服务 this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); } /** * 渲染优惠码组件 * @param {Object} data - 渲染数据 */ doRender_(data) { return this.templates_ .findAndRenderTemplate(this.element, Object.assign(this.getDefaultData(), data) ) .then((el) => { this.clearDom(); this.element.appendChild(el); // 绑定复制代码功能 this.copyCode(el, data); }); } /** * 获取渲染模板 * @param {Object} data - 渲染数据 */ getRenderTemplate(data) { const renderData = Object.assign(this.getDefaultData(), data); return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); return el; }); } /** * 清除DOM内容 */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * 获取默认数据 * @returns {Object} 默认数据对象 */ getDefaultData() { return { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), image_domain: this.win.SHOPLAZZA.image_domain, copyBtnClass: this.copyBtnClass, copyClass: this.copyClass } } /** * 复制优惠码功能 * @param {Element} el - 当前元素 */ copyCode(el) { const copyBtnList = el.querySelectorAll(`.${this.copyBtnClass}`); if (copyBtnList.length > 0) { copyBtnList.forEach(item => { item.onclick = async () => { // 确保获取正确的元素和内容 const codeElement = item.querySelector(`.${this.copyClass}`); if (!codeElement) return; // 获取纯文本内容 const textToCopy = codeElement.innerText.trim(); // 尝试使用现代API,如果失败则使用备用方案 try { if (navigator.clipboard && navigator.clipboard.writeText) { await navigator.clipboard.writeText(textToCopy); } else { throw new Error('Clipboard API not available'); } // 显示复制成功提示 this.showCopySuccessToast(textToCopy, el); } catch (err) { console.error('Modern clipboard API failed, trying fallback...', err); // 使用备用复制方案 this.fallbackCopy(textToCopy, el); } const discountId = item.dataset["discountId"]; // 跳转决策: is_redirection + link(可选覆盖) const setting = { is_redirection: item.dataset["redirection"] === "true", link: item.dataset["link"], }; const landingUrl = `/promotions/discount-default/${discountId}`; const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl); if (finalUrl && appDiscountUtils.inProductBody(this.element)) { this.win.open(finalUrl, '_blank', 'noopener'); } } }) } } /** * 使用 execCommand 的复制方案 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ fallbackCopy(codeText, el) { const textarea = this.win.document.createElement('textarea'); textarea.value = codeText; // 设置样式使文本框不可见 textarea.style.position = 'fixed'; textarea.style.left = '-9999px'; textarea.style.top = '0'; // 添加 readonly 属性防止移动端虚拟键盘弹出 textarea.setAttribute('readonly', 'readonly'); this.win.document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { this.win.document.execCommand('copy'); // 显示复制成功提示 this.showCopySuccessToast(codeText, el); } catch (err) { console.error('Copy failed:', err); } this.win.document.body.removeChild(textarea); } /** * 创建 Toast 元素 * @returns {Element} 创建的 Toast 元素 */ createToastEl_() { const toast = document.createElement('ljs-toast'); toast.setAttribute('layout', 'nodisplay'); toast.setAttribute('hidden', ''); toast.setAttribute('id', 'discount-code-toast'); toast.style.zIndex = '1051'; return toast; } /** * 挂载 Toast 元素到 body * @returns {Element} 挂载的 Toast 元素 */ mountToastToBody_() { const existingToast = this.win.document.getElementById('discount-code-toast'); if (existingToast) { return existingToast; } const toast = this.createToastEl_(); this.win.document.body.appendChild(toast); return toast; } /** * 复制成功的提醒 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ showCopySuccessToast(codeText, el) { const $toast = this.mountToastToBody_(); SPZ.whenApiDefined($toast).then(toast => { toast.showToast("Discount code copied !"); this.codeCopyInSessionStorage(codeText); }); } /** * 复制优惠码成功后要存一份到本地存储中,购物车使用 * @param {string} codeText - 要复制的文本 */ codeCopyInSessionStorage(codeText) { try { sessionStorage.setItem('other-copied-coupon', codeText); } catch (error) { console.error(error) } } } // 注册自定义元素 SPZ.defineElement('spz-custom-discount-code-model', SpzCustomDiscountCodeModel);
/** * Custom discount code component that handles displaying and managing discount codes * @extends {SPZ.BaseElement} */ class SpzCustomDiscountCode extends SPZ.BaseElement { constructor(element) { super(element); // API endpoint for fetching discount codes this.getDiscountCodeApi = "\/api\/storefront\/promotion\/code\/list"; // Debounce timer for resize events this.timer = null; // Current variant ID this.variantId = "bcd3c3e6-88c4-481d-845c-d27a04ca7b77"; // Store discount code data this.discountCodeData = {} } /** * Check if layout is supported * @param {string} layout - Layout type * @return {boolean} */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** * Initialize component after build */ buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // Bind methods to maintain context this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } /** * Setup component when mounted */ mountCallback() { this.getData(); // Add event listeners this.viewport_.onResize(this.resize); this.win.document.addEventListener('dj.variantChange', this.switchVariant); } /** * Cleanup when component is unmounted */ unmountCallback() { this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } /** * Handle resize events with debouncing */ resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { if (appDiscountUtils.inProductBody(this.element)) { this.render(); } else { this.renderSkeleton(); } }, 200); } /** * Handle variant changes * @param {Event} event - Variant change event */ switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '7eedacbe-f9d3-4c2a-9e85-3a77fdcc1e2b' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } /** * Fetch discount code data from API */ getData() { if (appDiscountUtils.inProductBody(this.element)) { const reqBody = { product_id: "7eedacbe-f9d3-4c2a-9e85-3a77fdcc1e2b", variant_id: this.variantId, product_type: "default", } if (!reqBody.product_id || !reqBody.variant_id) return; this.discountCodeData = {}; this.win.fetch(this.getDiscountCodeApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { let data = await response.json(); if (data.list && data.list.length > 0) { data.list[0].product_setting.template_config = JSON.parse(data.list[0].product_setting.template_config); // Format timestamps to local timezone const zone = this.win.SHOPLAZZA.shop.time_zone; data.list = data.list.map(item => { if(+item.ends_at !== -1) { item.ends_at = appDiscountUtils.convertTimestampToFormat(+item.ends_at, zone); } item.starts_at = appDiscountUtils.convertTimestampToFormat(+item.starts_at, zone); return item; }); } this.discountCodeData = data; this.render(); } else { this.clearDom(); } }).catch(err => { console.error("discount_code", err) this.clearDom(); }); } else { this.renderSkeleton(); } } /** * Clear component DOM except template */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * Render discount codes with formatted dates */ render() { // Render using discount code model SPZ.whenApiDefined(document.querySelector('#spz_custom_discount_code_model')).then(renderApi => { renderApi.doRender_({ discountCodeData: this.discountCodeData }) }).catch(err => { this.clearDom(); }) } renderSkeleton() { // Render template for non-product pages this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile() }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) .catch(err => { this.clearDom(); }); } } // Register custom element SPZ.defineElement('spz-custom-discount-code', SpzCustomDiscountCode);
Quantity
Free worldwide shipping
Free returns
Sustainably made
Secure payments

Description

🦋 Dragonfly Bluebell Garden Stake

Add Elegance & Whimsy to Every Garden


🌸Bring Your Garden to Life with Graceful Beauty

Transform your garden, flower pots, or patio into a charming outdoor oasis with the Dragonfly Bluebell Garden Stake.

Featuring a shimmering dragonfly with iridescent wings and delicate hanging bluebell flowers that gently sway in the breeze, this handcrafted garden ornament adds movement, color, and elegance to any outdoor space.

✨ Handcrafted Metal Design
🦋 Beautiful Dragonfly Accent
🔔 Delicate Hanging Bluebells
🌿 Perfect for Gardens, Planters & Patios

🌼 Limited Time Offer

【SHOP NOW】


🌿 Why You'll Love It

🦋 Elegant Dragonfly Design

Inspired by nature, the dragonfly features beautifully detailed translucent wings that catch the sunlight and create a stunning visual effect.

Its graceful silhouette instantly enhances any flower pot or garden bed.


🔔 Charming Hanging Bluebells

The delicate bluebell flowers gently swing with the breeze, creating a relaxing and lifelike garden display.

✔ Adds gentle movement

✔ Creates visual interest

✔ Bright blue floral accents

✔ Elegant handcrafted details


🌸 Instantly Beautify Any Space

Perfect for decorating:

  • Flower Pots
  • Garden Beds
  • Walkways
  • Balconies
  • Patios
  • Courtyards
  • Front Porch
  • Indoor Planters

A simple decoration that makes a big difference.


✨ Handcrafted Quality

Each piece is carefully crafted with attention to every detail.

Premium metal construction provides excellent durability while maintaining an elegant appearance.

The vivid blue flowers and colorful dragonfly bring your garden to life throughout every season.


☀️ Weather-Resistant Design

Built for outdoor use.

✔ Rust-resistant

✔ Fade-resistant colors

✔ Waterproof finish

✔ Suitable for year-round display

Enjoy lasting beauty through sunshine, rain, and changing seasons.


🎁 A Thoughtful Gift for Garden Lovers

Looking for the perfect gift?

The Dragonfly Bluebell Garden Stake is ideal for:

🌼 Garden Enthusiasts

🎁 Mother's Day

🏡 Housewarming Gifts

🎂 Birthdays

💐 Plant Lovers

👩 Grandparents

🎄 Holiday Gifts

A beautiful decoration they'll treasure for years.


🌟 Product Features

Premium Metal Frame

Strong, durable, and designed to withstand outdoor conditions.

Iridescent Dragonfly Wings

Reflect natural light beautifully from different angles.

Moving Bluebell Flowers

Gracefully sway with the wind for a realistic garden effect.

Easy Installation

Simply insert the stake into soil, flower pots, or garden beds.

No tools required.


📦 Package Includes

✔ 1 × Dragonfly Bluebell Garden Stake


📏 Product Specifications

Product Name

Dragonfly Bluebell Garden Stake

Material

Handcrafted Metal + Colored Glass/Resin Accents

Color

Blue / Green / Gold

Installation

Ground Stake

Suitable For

Indoor & Outdoor Decoration


⭐ Customer Reviews

★★★★★

"Absolutely beautiful! It catches the sunlight perfectly and looks magical in my flower pot."

— Linda M.

★★★★★

"The little bluebells move beautifully in the wind. It makes my garden feel alive."

— Sarah W.

★★★★★

"Excellent craftsmanship and much prettier than I expected."

— Jennifer C.


🌼 Perfect For

✔ Flower Pots

✔ Garden Beds

✔ Balcony Decoration

✔ Patio Décor

✔ Yard Ornament

✔ Porch Decoration

✔ Indoor Plants

✔ Outdoor Landscaping


💚 Why Customers Choose Us

🚚 Fast Shipping

💳 Secure Checkout

❤️ 30-Day Money-Back Guarantee

🌎 Premium Quality

🎁 Perfect Gift Choice


🌸 Bring Nature's Beauty Home

Add a touch of elegance, movement, and color to your favorite plants and garden spaces.

The Dragonfly Bluebell Garden Stake is more than a decoration—it's a charming piece of garden art that brings joy every time you see it.

🌼 ORDER YOURS TODAY


❓ Frequently Asked Questions

Q: Is it suitable for outdoor use?

A: Yes. It's designed with weather-resistant materials for year-round outdoor display.


Q: Does it require assembly?

A: No. Simply insert the stake into the soil or a flower pot, and it's ready to display.


Q: Will the flowers move?

A: Yes. The hanging bluebells gently sway with the breeze, adding natural movement to your garden.


Q: Is it a good gift?

A: Absolutely! It's a thoughtful gift for gardeners, plant lovers, mothers, grandparents, and anyone who enjoys decorating outdoor spaces.