Futtumy 4 Pcs Bathroom Shower Curtain Sets, Polyester Shower Curtain Sets with Bath Rugs, Ocean Coral Reef Sea Turtle Pattern Bathroom Sets Shower Curtain and Rug Set
Futtumy 4 Pcs Bathroom Shower Curtain Sets, Polyester Shower Curtain Sets with Bath Rugs, Ocean Coral Reef Sea Turtle Pattern Bathroom Sets Shower Curtain and Rug Set
${function() {
const variantData = data.variant || {"id":"03c6b2ac-3286-4f90-b3da-927b9e38beb2","product_id":"e2c5b90a-be45-4b8c-a426-03e06a71c765","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"WFS-BA-M-HG-2-W","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":29.91,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"29.91","retail_price":"0","available":true,"url":"\/products\/futtumy-4-pcs-bathroom-shower-curtain-sets-polyester-shower-curtain-sets-with-bath-rugs-ocean-coral-reef-sea-turtle-pattern-bathroom-sets-shower-curtain-and-rug-set?variant=03c6b2ac-3286-4f90-b3da-927b9e38beb2","available_quantity":999999999,"options":[],"off_ratio":"0","flashsale_info":{"variant_id":"03c6b2ac-3286-4f90-b3da-927b9e38beb2","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.91","compare_at_price":"","discount_price":"29.91","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.
Size Information:
Shower Curtain Size: 70" L × 69" W
Bathroom Mat Size: 23.6" L × 15.7" W
Toilet Lid Cover Size: 16.5" L × 14.6" W
U Shape Rug Size: 17.7" L × 15.8" W
Waterproof Shower Curtain & HD Printing:
Futtumy shower curtain made of 100% environment-friendly water-repellent oxford polyester fabric, durable, resist shrinking and creasing, skin-friendly, perfect to avoid spilling water. Adopt HD printing and featuring vivid color, no fading, opaque, protecting your privacy.
Futtumy bathroom mats rugs sets are made of high-density flannel, fine texture, feel soft. Adopted advanced seaming technology which makes the fibers last a long time.
Futtumy bathroom rugs set backed with very effective & durable PVC dots in order to prevent skidding. Our toilet lid cover have sturdy elastic band on the back allow it to stay in place when you lift it.
Machine washable in cold water, wash separately and hang dry recommended, you had better ironing in low temperature. We give 12 hooks for free to our customer, ensure everyone can easy to install this shower curtain.
Package List:
1× Shower Curtain;
1× Bathroom Mat;
1× Toilet Lid Cover;
1× U Shape Rug;
12 × Strong Plastic Hooks
- High-quality Materials:
- Futtumy shower curtain made of 100% polyester fabric, waterproof, no odor, no lining, quick-drying, can effectively prevent water mist in the shower, environmentally friendly and thick enough to protect privacy, can be used for a long time, very suitable for home decoration.
- Upgrade Memory Foam Bath Mats Ultra absorbent:
- Feels amazing on bare feet, The thick and luxurious top layer will provide you extra support to soothe sore muscles. Provide you first-class massage experience when you step out of the shower or tub. Plush top layer of the memory foam bath rug captures and absorbs extra water and moisture in your bathroom, helping to keep your floors clean and dry.
- Anti-slip Bathroom Rugs:
- Bathroom rugs have a non-slip TPR backing to avoid slipping. The strong enhanced anti-slip bathroom rug / U type rugs contains soft flannel cover adds an extra touch of luxury. Quick-dry, highly absorbent and durable.
- Easy to Care:
- Futtumy bathroom shower curtain sets is easy to care, no fading, machine washable in cold water, hang to dry, soak in the water to get rid of wrinkles.
Vendor by :
Futtumy
Sku :
WFS-BA-M-HG-2-W
Inventory :
999999999
${function(){
const variantData = data.variant || {"id":"03c6b2ac-3286-4f90-b3da-927b9e38beb2","product_id":"e2c5b90a-be45-4b8c-a426-03e06a71c765","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"WFS-BA-M-HG-2-W","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":29.91,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"29.91","retail_price":"0","available":true,"url":"\/products\/futtumy-4-pcs-bathroom-shower-curtain-sets-polyester-shower-curtain-sets-with-bath-rugs-ocean-coral-reef-sea-turtle-pattern-bathroom-sets-shower-curtain-and-rug-set?variant=03c6b2ac-3286-4f90-b3da-927b9e38beb2","available_quantity":999999999,"options":[],"off_ratio":"0","flashsale_info":{"variant_id":"03c6b2ac-3286-4f90-b3da-927b9e38beb2","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.91","compare_at_price":"","discount_price":"29.91","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}
` }()}