Mom & Grandmom With Names - REAL MOON PHASE Anniversary Calendar - Personalized Flower Shadow Box

people are viewing this right now
$49.99
$59.99
-$10.00
  • Deliver to: |
Size:  7"X9"(18cm*23cm)
Quantity

Description

Description

Introduction about this product

Introducing our Customized Photo Flower Photo Frame with Anniversary, the perfect gift for family members and loved ones! This beautiful photo frame features a stunning bouquet of handmade paper flowers arranged in a delicate and intricate design that is sure to catch the eye and warm the heart.


Personalized message area included

To make this gift even more special, we've included a customizable message area where you can add a personalized note for your loved one, making it the perfect gift for anniversaries, birthdays, or any other special occasion.

High-quality materials, long-lasting keepsake

Our custom photo flower anniversary frames are made from the finest quality materials to ensure a treasured keepsake for years to come. It's the perfect way to show your love and appreciation to that special someone and a unique and thoughtful gift they're sure to treasure forever. Make someone's day extra special by ordering today!

Note

We may need to adjust the layout of the photo slightly to make it fit. Each order is handmade by us and takes between 2-5 working days to complete.

Refunds & Returns not accepted 
FREE replacement if eligible

If you don't have a positive experience for ANY reason, contact us and we will make sure that ALL your concerns are addressed and you leave 100% satisfied and smiling

We have 24/7 Ticket and Email Support. Please contact us via e-mail or our contact form if you need assistance we're here for you.

Our service mailbox: service@loradream.com

Shipping & Returns

  • Orders can be cancelled or modified within 2 hours after being placed.
  • International orders: It may take additional days if orders have to go through customs. We have no influence on the customs process and apologize for any inconvenience due to delivery delays resulting from this.
  • For more detailed information and instructions, please visit our Replacement & Refund Policy.
  • Learn more about Shipping Policy here.

Personalization

  • Please complete fields required to customize options (Name/Characteristics) and recheck carefully all the customized options.
  • Text: Standard English excluding special characters, emojis to ensure the best looking.
  • Characteristics: Pick one-by-one options that match your description.
  • The last step, click “ADD TO CART” and wait for us to create your wonderful creation ❤️.
Customer Reviews
Here are what our customers say.
Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.