Spa Bath Gift Sets for Women - 11 Pcs Lavender Gift Baskets, Beauty Birthday Gifts for Her
Spa Bath Gift Sets for Women - 11 Pcs Lavender Gift Baskets, Beauty Birthday Gifts for Her
${function() {
const variantData = data.variant || {"id":"b1660ede-8042-4b14-a258-cedae3d54be6","product_id":"65b6154b-4896-49f0-90e6-0c1cb6ed1ffd","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"BE-BP-013","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":29.56,"min_quantity":1}],"weight":"0","compare_at_price":"56.99","price":"29.56","retail_price":"56.99","available":true,"url":"\/products\/spa-bath-gift-sets-for-women-11-pcs-lavender-gift-baskets-beauty-birthday-gifts-for-her?variant=b1660ede-8042-4b14-a258-cedae3d54be6","available_quantity":999999999,"options":[],"off_ratio":"48","flashsale_info":{"variant_id":"b1660ede-8042-4b14-a258-cedae3d54be6","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"29.56","compare_at_price":"","discount_price":"29.56","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"48","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
const saveType = null;
const productSaveLabel = null;
return `
-
${ variantData.off_ratio }%
`; }()}
${function(){
return `
${data.starNum}/${data.starTotal}
`;
}()}
${function(){
return `
${data.showStarText === 'true' ? `
${data.starNum}/${data.starTotal}
` : ''}
`;
}()}
const TAG = 'spz-custom-revue-star';
class SPZCustomRevueStar extends SPZ.BaseElement {
constructor(element) {
super(element);
}
static deferredMount() {
return false;
}
buildCallback = () => {
this.action_ = SPZServices.actionServiceForDoc(this.element);
this.templates_ = SPZServices.templatesForDoc(this.element);
this.xhr_ = SPZServices.xhrFor(this.win);
this.starNum = this.element.getAttribute('starNum');
this.starTotal = this.element.getAttribute('starTotal');
this.showStarText = this.element.getAttribute('showStarText');
this.starColor = this.element.getAttribute('color');
this.interact = this.element.getAttribute('interact');
this.starSize = this.element.getAttribute('starSize') || 14;
}
mountCallback = () => {
this.doRender_({
starTotal: this.starTotal,
totalArray: Array.from({ length: Number(this.starTotal) }, (v, k) => k + 1),
starNum: this.starNum,
showStarText: this.showStarText,
starColor: this.starColor,
starSize: this.starSize
}).then(() => {
if (this.interact) {
this.addEventListeners_();
}
});
}
addEventListeners_ = () => {
const stars = document.querySelectorAll('.revue-star__star');
stars.forEach(star => {
star.addEventListener('click', event => {
const starEl = star.closest('.revue-star__star');
const starIndex = Number(starEl.dataset.index);
let isHalf = event.offsetX < star.offsetWidth / 2;
// rtl
if (document.documentElement.getAttribute('dir') === 'rtl') {
isHalf = event.offsetX > star.offsetWidth / 2;
}
const starValue = isHalf ? starIndex - 0.5 : starIndex;
this.starClickHandler_({ value: starValue });
});
});
}
renderStar = () => {
const isRtl = document.documentElement.getAttribute('dir') === 'rtl';
const stars = this.element.querySelectorAll('.revue-star__star');
stars.forEach((star, i) => {
const starIndex = i + 1;
const starEl = star.querySelector('svg:nth-child(2)');
const isHalf = this.starNum % 1 > 0 && Math.ceil(this.starNum) === starIndex;
const isSolid = starIndex <= Math.ceil(this.starNum);
starEl.style.display = isSolid ? 'block' : 'none';
if (isHalf) {
if (isRtl) {
// RTL布局下,如果是半星,显示星星的右半边
starEl.style.clipPath = `polygon(50% 0, 100% 0, 100% 100%, 50% 100%)`;
} else {
// LTR布局下,如果是半星,显示星星的左半边
starEl.style.clipPath = `polygon(0 0, 50% 0, 50% 100%, 0 100%)`;
}
} else {
starEl.style.clipPath = `polygon(0 0, 100% 0, 100% 100%, 0 100%)`
}
});
const showCountEle = this.element.querySelector('#revue-star-show-count');
showCountEle && SPZ.whenApiDefined(showCountEle).then((api) => {
api.render({ starNum: this.starNum, starTotal: this.starTotal });
});
}
doRender_ = (data) => {
return this.templates_
.findAndRenderTemplate(this.element, { starSize: this.starSize, ...data }, null)
.then((el) => {
const children = this.element.querySelector('*:not(template)');
children && SPZCore.Dom.removeElement(children);
this.element.appendChild(el);
})
.then(() => {
this.starNum = data.starNum;
this.renderStar();
});
}
starClickHandler_ = (event) => {
this.starNum = event.value;
this.renderStar();
this.triggerEvent_('change', { value: event.value });
}
triggerEvent_(name, data) {
const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {});
this.action_.trigger(this.element, name, event);
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.CONTAINER;
}
}
SPZ.defineElement(TAG, SPZCustomRevueStar)
()
try {
const productId = window.SHOPLAZZA.meta.page.resource_id;
const productType = `default`;
const getProductReviews = (star_least) =>
fetch('/api/comment/count-star-multi',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
product_id: [productId],
star_least: star_least || 1,
}),
}).then(res => res.json());
try {
const section = document.querySelector('#revue-product-star');
if(productType === "gift_card" && section) {
section.style.display = 'none';
}
} catch(e) {
console.log(e);
window.addEventListener('load', () => {
try {
const section = document.querySelector('#revue-product-star');
if(productType=== "gift_card" && section) {
section.style.display = 'none';
}
} catch(e) {
console.log(e)
}
})
}
const getReviewsConfig = async () => {
let data = {};
const url = new URL(window.location.href);
const preview_theme_id = url.searchParams.get('preview_theme_id');
const commentConfig = await fetch('/api/comment-config', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
}
}).then(res => res.json());
data = commentConfig.data;
const themeConfig = await fetch(`/api/comment-config?theme_id=${preview_theme_id || ''}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
}
}).then(res => res.json());
if (themeConfig?.data && themeConfig.data.star_color) {
data.star_color = themeConfig.data.star_color;
}
if (preview_theme_id) {
data.star_least = window.apps_global && apps_global.reviews && apps_global.reviews.preview_star_least;
} else if (themeConfig?.data && themeConfig.data.product_settings) {
data.star_least = themeConfig.data.product_settings.star_least;
}
return data;
};
if (productId && window.SHOPLAZZA.meta.page.template_type == 1) {
getReviewsConfig().then(async res => {
const config = res;
let review = await getProductReviews(config.star_least);
review = review.data[productId];
if (!config.open_status || (!review.comment_avg_star && !config.show_no_comment_star)) return;
const render = async () => {
const section = document.querySelector('#revue-product-star');
const starComponent = document.querySelector('#revue-product-star-component');
const count = document.querySelector('#revue-product-star-count');
count.innerText = review.published_count;
const api = await SPZ.whenApiDefined(starComponent);
api.doRender_({
starNum: review.comment_avg_star,
starTotal: 5,
showStarText: false,
starColor: config.star_color,
totalArray: Array.from({ length: 5 }, (v, k) => k + 1)
});
section.style.opacity = 1;
}
render();
document.addEventListener('dj.editor.update', render);
});
}
} catch (e) {console.warn(e)};
${function() {
const minInventory = parseInt('7');
const maxInventory = parseInt('10');
const randomInventory = Math.round(Math.random() * (maxInventory - minInventory)) + minInventory;
const customText = "Only {stock} item(s) left in stock!".replace(/\{stock\}/g, '' + randomInventory + '');
const barWidth = (randomInventory / maxInventory) * 100 + '%';
return `
`;
}()}
Product was out of stock.
Enjoy free shipping on every order, delivered to your doorstep no matter where you are in the world.
Shop with confidence with our hassle-free returns policy, ensuring you love what you buy.
Designed with the planet in mind, all our products are committed to sustainable practices.
Your payment information is always protected with our advanced, encrypted checkout security.
Welcome to the world of Body & Earth!
Lavender Scented Spa Basket Kits For Women: The lavender - scented body wash come with everything you need for a pleasant bathing, such as body lotion, bath salt, bath bomb, etc. that soothes your body, promoting a better night?s sleep and will provide the ultimate spa experience, relax you completely when you bath, your skin will get the best nourishment at this time!
A Pampering & Relaxing Gift Set for Christmas, Birthday, Mother?s Day!
Our upscale and beautiful spa set is perfect as a gift or for your own indulgent pleasure. For Christmas, Mother?s Day, Valentine?s Day gift, a bridesmaid gift on your wedding day perhaps, a thank you gift for yourself, a birthday gift for your lovely girl, a retirement gift or just a special way of saying - congratulations, thank you or I love you to someone precious in your thoughts!
Bath Spa Gift Baskets Includes (11 pcs):
Shower Gel (5.6FL OZ/ 165ml), Bubble Bath (5.6FL OZ/ 165ml), Hand Lotion (2.7FL OZ/ 80ml)
Body Lotion (2.7FL OZ/ 80ml), Hand Soap (4.9FL OZ/ 145ml), Bath Scrub (1.5FL OZ/ 45ml)
Body Butter (1.5FL OZ/ 45ml), Bath Salts (3.5 OZ/ 100g)
Bath Bomb x 1
Flower Pouf x 1
Tin Basket x 1
-
Nourishing Ingredients- Formulated with natural ingredients such as Sunflower Seed Oil and Vitamin E help to moisturize and soften dry skin
-
Essential Oils- Uplifting Lavender essential oils calm the mind, promote overall well-being, transport your thoughts to relaxing time while our lavender oil cleanses and hydrates your skin
-
Luxurious at-home Spa Set- Items include: shower gel, bubble bath, body mist, body lotion, 2 x bath bombs, body scrub, body butter, bath salts, flower pouf and tin basket
-
Body Lotion & Hand Cream- Take a moment this weekend to soak in some moments of relaxation for your body and mind. Our fan favorite this body lotion and hand cream is the best way to nurture your skin in luxurious moisture
-
Extra-large Tin Basket Set- This extra-large tin basket with rope handles is handcrafted to perfection with attention to craftsmanship and detail. It is the perfect size to make any recipient feel pampered and special. �It can be used in many different ways such as storing a variety of items in a powder room, bathroom or bedroom
Vendor by :
BODY & EARTH
Sku :
BE-BP-013
Inventory :
999999999
${function(){
const variantData = data.variant || {"id":"b1660ede-8042-4b14-a258-cedae3d54be6","product_id":"65b6154b-4896-49f0-90e6-0c1cb6ed1ffd","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"BE-BP-013","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":29.56,"min_quantity":1}],"weight":"0","compare_at_price":"56.99","price":"29.56","retail_price":"56.99","available":true,"url":"\/products\/spa-bath-gift-sets-for-women-11-pcs-lavender-gift-baskets-beauty-birthday-gifts-for-her?variant=b1660ede-8042-4b14-a258-cedae3d54be6","available_quantity":999999999,"options":[],"off_ratio":"48","flashsale_info":{"variant_id":"b1660ede-8042-4b14-a258-cedae3d54be6","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"29.56","compare_at_price":"","discount_price":"29.56","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"48","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
return `
Vendor by :
${data.product && data.product.vendor}
Weight :
${variantData && variantData.weight}${variantData && variantData.weight_unit}
Barcode :
${variantData && variantData.barcode}
Sku :
${variantData && variantData.sku}
Inventory :
${variantData && variantData.available_quantity}
` }()}