Spa Gift Sets for Women Gifts - 9pcs Lavender Relaxation Bath Baskets, Beauty Holiday Birthday Body Care Kits Gifts
Spa Gift Sets for Women Gifts - 9pcs Lavender Relaxation Bath Baskets, Beauty Holiday Birthday Body Care Kits Gifts
${function() {
const variantData = data.variant || {"id":"6e822ef8-dbdd-46ce-adb9-09073ae13f9b","product_id":"4868318e-0f6a-46d6-b73a-36370f7f7f6b","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"Spa-18-02-new","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":25.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"25.99","retail_price":"0","available":true,"url":"\/products\/spa-gift-sets-for-women-gifts-9pcs-lavender-relaxation-bath-baskets-beauty-holiday-birthday-body-care-kits-gifts?variant=6e822ef8-dbdd-46ce-adb9-09073ae13f9b","available_quantity":999999999,"options":[],"off_ratio":"0","flashsale_info":{"variant_id":"6e822ef8-dbdd-46ce-adb9-09073ae13f9b","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":"0","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 SPA LUXETIQUE!
Our 8pc spa gift basket can be enjoyed under any circumstance! Our spa treatments allow you and your loved one to swim away from responsibility just for a little while and return to reality feeling refreshed and content!
Pampering Home Bath Spa Gift Kit - Turn a Simple Bath into a Pampering and Relaxing Experience. Gentle and moisturizing cleanser. Foaming formula for a relaxing bubble bath!
A Special Gift Set - Our upscale and beautiful packaging wrapped in a bath tub is Perfect gift for your lover or your own indulgent pleasure! Great Gift Idea for Birthdays, Holidays, Anniversaries, Christmas, Mother's Day!
Nourishes and moisturizes body for silky-smooth skin. Ultra-fizzy and leaves skin soft and skin lightly scented. Replenishes skin and locks in moisture for naturally radiant skin. Relaxes and calms the mind and body!
Bath and Body Sets Include:
7.9 oz Shower Gel
7.9 oz Bubble Bath
3.4 oz Body Lotion
2*1 oz Bath Bombs
3.6 oz Body Butter
3.5 oz Bath Salt
-
Natural Bath Spa Set - Our spa gift basket is formulated with natural ingredients, that moisturize and refresh the body, and revitalize the mind and spirit, Nourishing ingredients such as Sunflower Seed Oil, Vitamin E and Lavender Essential Oils that helps to nourish the skin and lock in moisture
-
Relaxing Lavender Essential Oils - Inspired by the lavender fields in the French countryside, this beautiful Lavender scent is calming, floral, fragrant and long-lasting
-
Pampering Body Wash Set - A hot bath with our lavender bubble bath, bath salts, and bath bombs before bed encourages a great night's sleep and prepares the body for bedtime as it helps to reconnect the mind and body!
-
Versatile Bath Tub - Fragrant and delightful assortment of luxury spa products will be sure to please you or a loved one. This cute reusable bath tub can be used in many different ways such as storing a variety of items in a powder room, bathroom or bedroom
-
Deep Breath in Lavender Sea - The sleep enhancing fragrance lavender contained in our products can help to calm you down and feel comfortable. Try surrounding yourself with our lavender scent and sink deep into dream time
-
Deep Moisturizing Experience - A musical blend of lavender and sunflower seed oil will infuse your slumbers for a deep sleep and help you to wake up feeling fresh. Besides, the vitamin E inside the lotion & butter is ideal to heal dry skin and provide lasting moisturizing effects.
Vendor by :
spa luxetique
Sku :
Spa-18-02-new
Inventory :
999999999
${function(){
const variantData = data.variant || {"id":"6e822ef8-dbdd-46ce-adb9-09073ae13f9b","product_id":"4868318e-0f6a-46d6-b73a-36370f7f7f6b","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"Spa-18-02-new","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":25.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"25.99","retail_price":"0","available":true,"url":"\/products\/spa-gift-sets-for-women-gifts-9pcs-lavender-relaxation-bath-baskets-beauty-holiday-birthday-body-care-kits-gifts?variant=6e822ef8-dbdd-46ce-adb9-09073ae13f9b","available_quantity":999999999,"options":[],"off_ratio":"0","flashsale_info":{"variant_id":"6e822ef8-dbdd-46ce-adb9-09073ae13f9b","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":"0","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}
` }()}