Under Bed Storage With Wheels Underbed Containers Large Metal Foldable Space-saving Under Bed Drawer Shoe Storage Organizer on Wheels for Clothes(2 pieces, Black)
Under Bed Storage With Wheels Underbed Containers Large Metal Foldable Space-saving Under Bed Drawer Shoe Storage Organizer on Wheels for Clothes(2 pieces, Black)
${function() {
const variantData = data.variant || {"id":"f6201cc2-d5e0-41b6-8c27-295bbe13e772","product_id":"2edbdf56-7d45-424b-9ef8-b4dd603855d8","title":"","weight_unit":"kg","inventory_quantity":0,"sku":"WM-BZSN-B-T-002","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":49.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"49.99","retail_price":"0","available":true,"url":"\/products\/under-bed-storage-with-wheels-underbed-containers-large-metal-foldable-space-saving-under-bed-drawer-shoe-storage-organizer-on-wheels-for-clothes2-pieces-black?variant=f6201cc2-d5e0-41b6-8c27-295bbe13e772","available_quantity":999999999,"options":[],"off_ratio":"0","flashsale_info":{"variant_id":"f6201cc2-d5e0-41b6-8c27-295bbe13e772","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":"49.99","compare_at_price":"","discount_price":"49.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)) {
const section = document.querySelector('#revue-product-star');
if (section) section.remove();
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.
Product is unavailable.
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.
Under Bed Storage With Wheels Underbed Containers Large Metal Foldable Space-saving Under Bed Drawer Shoe Storage Organizer on Wheels for Clothes(2 pieces, Black)
Say goodbye to the clutter and mess in your bedroom and hello to a neat and organized space. This under bed storage container is an excellent way to create extra space for your belongings without sacrificing the room's aesthetics. The container is made from high-quality materials that durability, so you can trust it to hold your belongings for years to come. Its large size allows you to store multiple items such as clothes, shoes, bedding, and more. You can now utilize the previously unused space under your bed effectively.
-
Premium Metal Container: Never settle for flimsy plastic & linen underbed storage that tear too easily. Our under bed organizer is made of high quality metal, and baking painted at 220 ℃, which make it more sturdy, durable and have greater load-bearing capacity.
-
Larger Capacity Storage: This underbed storage (Size:33.2*17.1*7.1inches) is suitable for most standard size under bed space.Perfect for storing items under beds, sofas, dresser, desks, cabinets, couches, closets and other areas, greatly increasing the use of space.
-
Tool-free & 3-Step Assembly: We've simplified the complex assembly process into 3 steps. Just put the outer frame together, place the four wheels on the frame, and put the bottom piece inside. 15 seconds assemble without any tools. Use with complimentary dust cover when dustproof is needed. The under bed storage container can be folded to save space when not in use.
-
360° Rotating Wheels: Equipped with 4 smooth wheels, which allow the rolling underbed storage to move easily and smoothly across the floor and carpet even when full. Two of the wheels have a locking function, and can be locked by pressing the buttons on top to hold the cart in place.
-
Wide Application: Our storage bins can be used not only for under bed storage, but also for anything else you can think of. Great for storing out-of-season clothes, pants, shoes, quilts, sheets, toys, books, canned goods, snacks, sports equipment, etc.
Vendor by :
RM FOLD ART
Sku :
WM-BZSN-B-T-002
Inventory :
999999999
${function(){
const variantData = data.variant || {"id":"f6201cc2-d5e0-41b6-8c27-295bbe13e772","product_id":"2edbdf56-7d45-424b-9ef8-b4dd603855d8","title":"","weight_unit":"kg","inventory_quantity":0,"sku":"WM-BZSN-B-T-002","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":49.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"49.99","retail_price":"0","available":true,"url":"\/products\/under-bed-storage-with-wheels-underbed-containers-large-metal-foldable-space-saving-under-bed-drawer-shoe-storage-organizer-on-wheels-for-clothes2-pieces-black?variant=f6201cc2-d5e0-41b6-8c27-295bbe13e772","available_quantity":999999999,"options":[],"off_ratio":"0","flashsale_info":{"variant_id":"f6201cc2-d5e0-41b6-8c27-295bbe13e772","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":"49.99","compare_at_price":"","discount_price":"49.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}
` }()}