Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter
Sunflower Letter Adjustable Ring For Daughter/Granddaughter

Sunflower Letter Adjustable Ring For Daughter/Granddaughter

Choose Letter
Please select a choose letter
Price
$19.99
$9.99
Save  $10.00
Quantity
TO MY BEAUTIFUL
Granddaughter
When you feel overwhelmed
Don't forget that you are my granddaughter
You are my sunshine
Always believe in yourself

FEATURES

  • UNIQUE DESIGN: Sunflowers symbolize warmth, happiness, positivity and power, since it bears such a strong resemblance to the sun itself. ring engraved You are my sunshine in the inner ring. great gift for your special lover. bring joy and beauty in her life.
  • ADJUSTABLE MOOD ROTATABLE RING: Adjustable design to fits most finger sizes. the sunflower of the ring can be spun smoothly. mood ring provides meditative, relaxing, anxiety reducing, calm your nerves and focus effects and gets you through stress with its light spin feature at parties or gatherings, even improve relationships.
  • PREMIUM MATERIALS: Adjustable ring crafted from genuine sterling silver, well-polished surface which is nickel free, lead free and hypoallergenic, not tarnish or fade. shiny sunflower rings made of hight quality aaa+ cubic zirconia, faceted clear like diamond, simple and elegant, adds female charm. wrap open ring, flexible size to adjust, fits most finger sizes.
  • PERFECT GIFT CHOICE: Fit to any gift giving occasion. Christmas gift, Halloween gift, Thanksgiving Day gift, Mother's Day gift, birthday gift, graduation gift. An ideal gift for mom, daughters or granddaughters.

SPECIFICATIONS

  • Material:Alloy
  • Color: As shown
  • Size: Adjustable

PACKAGE INCLUDES

  • 1* Sunflower Letter Adjustable Ring For Daughter/Granddaughter
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);