Bath Gift Sets for Women, 8 Pcs Cherry Blossom & Jasmine Spa Baskets, Beauty Body Holiday Birthday Gifts for Her
Bath Gift Sets for Women, 8 Pcs Cherry Blossom & Jasmine Spa Baskets, Beauty Body Holiday Birthday Gifts for Her
${function() {
const variantData = data.variant || {"id":"ec65c055-7a94-4fb5-80e8-66e04e26d5f8","product_id":"7effe9c6-5e90-4564-b4dc-6a1fa2f6f3a0","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"2019-AMABE-3-2-1","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":25.99,"min_quantity":1}],"weight":"0","compare_at_price":"45.99","price":"25.99","retail_price":"45.99","available":true,"url":"\/products\/bath-gift-sets-for-women-8-pcs-cherry-blossom-jasmine-spa-baskets-beauty-body-holiday-birthday-gifts-for-her?variant=ec65c055-7a94-4fb5-80e8-66e04e26d5f8","available_quantity":999999999,"options":[],"off_ratio":"43","flashsale_info":{"variant_id":"ec65c055-7a94-4fb5-80e8-66e04e26d5f8","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":"25.99","compare_at_price":"","discount_price":"25.99","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"43","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.
Body & Earth, Love at First Scent-- Give the gift of self-care with our beautiful bath sets!
Our indulgent home spa bath gift sets of fragrant and pampering bath and body products help to smooth and moisturize the skin for a luxurious bath experience
Our upscale and beautiful packaging is perfect as a gift for holiday, birthday, anniversary, thanksgiving day, Christmas, Mother's Day gift for mom, for your own indulgent pleasure or a loved one anytime of the year!
Package list:
Bubble Bath (5.4OZ/160ml), Shower Gel (5.4OZ/160ml), Shampoo Bar (2.1OZ/ 60g),
Body Lotion (3.4OZ/100ml), Soap (3.5OZ/100g), Bath Salt (2.1OZ/60g),
Soap Petal x 4, Reusable Tub x 1
-
Nourishing Ingredients: Everything in the bath set is made from top rated and natural ingredients, including sunflower seed oil and vitamin E, focusing on moisturizing and softening skin (for all skin type)
-
Essential Oils: Spa gift package Infused with Cherry Blossom and Jasmine oils which are rich in anti-oxidants and repairs the skins natural barriers, promoting smooth, nourished skin. Perfect Scent to achieve complete relaxation and have the ultimate home spa experience
-
From Head-To-Toe: This at-home spa gift set comes with products that will treat you from head-to-toe, starting with our nourishing shampoo bar to a full body rejuvenation with our bar
-
Bath Salt: Our bath salt is extracted from deep sea. With essential minerals inside, it can nourish every call of your body and push your skin to breathe better
-
Body Lotion: Take a moment this weekend to soak in some moments of relaxation for your body and mind. Our fan favorite, this body cream is the best way to nurture your body in luxury moisture
-
Shower Gel: For those busy beauties out there, spend less time worrying about your routine and more time soaking up the Spa bath
-
Perfect for Everyone: Cherry Blossom & Jasmine Scent appeals to every woman, making the perfect present! This luxury set has everything you need to pamper yourself or a loved one
Vendor by :
Body & Earth
Sku :
2019-AMABE-3-2-1
Inventory :
999999999
${function(){
const variantData = data.variant || {"id":"ec65c055-7a94-4fb5-80e8-66e04e26d5f8","product_id":"7effe9c6-5e90-4564-b4dc-6a1fa2f6f3a0","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"2019-AMABE-3-2-1","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":25.99,"min_quantity":1}],"weight":"0","compare_at_price":"45.99","price":"25.99","retail_price":"45.99","available":true,"url":"\/products\/bath-gift-sets-for-women-8-pcs-cherry-blossom-jasmine-spa-baskets-beauty-body-holiday-birthday-gifts-for-her?variant=ec65c055-7a94-4fb5-80e8-66e04e26d5f8","available_quantity":999999999,"options":[],"off_ratio":"43","flashsale_info":{"variant_id":"ec65c055-7a94-4fb5-80e8-66e04e26d5f8","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":"25.99","compare_at_price":"","discount_price":"25.99","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"43","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}
` }()}