20 Pack Vacuum Storage Bags Space Saver Bags (4 Jumbo/4 Large/4 Medium/4 Small/4 Roll) Compression for Comforters and Blankets Sealer Clothes Storage
20 Pack Vacuum Storage Bags Space Saver Bags (4 Jumbo/4 Large/4 Medium/4 Small/4 Roll) Compression for Comforters and Blankets Sealer Clothes Storage
${function() {
const variantData = data.variant || {"id":"b45e61c2-b25b-4c4c-bdd6-79473c707a93","product_id":"4b226e92-ecf2-4209-b006-8cb6bfc634dd","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"20-zhou","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":25.99,"min_quantity":1}],"weight":"0","compare_at_price":"31.99","price":"25.99","retail_price":"31.99","available":true,"url":"\/products\/20-pack-vacuum-storage-bags-space-saver-bags-4-jumbo-4-large-4-medium-4-small-4-roll-compression-for-comforters-and-blankets-sealer-clothes-storage?variant=b45e61c2-b25b-4c4c-bdd6-79473c707a93","available_quantity":999999999,"options":[],"off_ratio":"19","flashsale_info":{"variant_id":"b45e61c2-b25b-4c4c-bdd6-79473c707a93","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":"19","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.
The double zipper design, thickened and not easy to damage clothes vacuum storage compression bag(without pump) has a vacuum port that is compatible with most vacuum hoses on the market, allowing you to vacuum the bag in less than a minute. Not only that, our compression bags are airtight, reusable, waterproof, moisture proof, insect proof, dust proof and non-toxic to effectively protect your clothes. They are stackable and suitable for storing seasonal clothes, clothes that need to be changed when traveling, extra blankets, pillows, old clothes, cushions and so on. It saves space in your home storage and is a must-have when traveling.
Including:
4 Jumbo: 39.37” X 27.5”(100cm X 70cm)
4 Large: 31.5” X 2.65”(80cm X 55cm)
4 Medium: 27.5”X 19.5”(70cm X 50cm)
4 Small: 23.5”X 15.7” (60cm X 40cm)
4 Small valveless: 23.5”X 15.7” (60cm X 40cm)
- 【Space saving】: Our vacuum bags work with most vacuum cleaners on the market. It is convenient to use. Just put the items into our storage vacuum bag, seal the zipper, which can effectively eliminate the air inside the bag, compress the clothes to the minimum volume, close the lid, and easily free up a lot of space, allowing you to store more things.
- 【Durable and long-lasting】: This model adopts a triple sealed turbo valve and a double zipper sealing design, which expels air and compresses clothing during the suction process. The material is made of PE+PA composite material, which is sturdy and durable, and can be reused multiple times.
- 【 Easy to classify 】: This vacuum compression bag adopts a transparent printing design, which makes the clothes, blankets, and pillows placed clear at a glance, making it easy to find what you need. Whether it's a wardrobe, storage box, or luggage, it can make your clothes arranged in an orderly manner and storage easier.
- 【 Multi purpose 】: This vacuum bag comes in multiple sizes, and in addition to being used for clothing storage, it can also be used to store soft items such as bedding, plush toys, pillows, etc.. Not only suitable for home storage, but also a must-have for outdoor travel. It can be used for travel such as airplanes, cruise ships, trains, self driving tours, etc. to save your space and provide you with a beautiful travel experience.
- 【 Effective Protection 】: The sealing performance of this vacuum bag is excellent, which can effectively isolate humid air from the outside and prevent clothes from getting damp and moldy. At the same time, it can also prevent clothing from being disturbed by dust and insects, and maintain the cleanliness and integrity of clothing.
Vendor by :
Cubepoint
Sku :
20-zhou
Inventory :
999999999
${function(){
const variantData = data.variant || {"id":"b45e61c2-b25b-4c4c-bdd6-79473c707a93","product_id":"4b226e92-ecf2-4209-b006-8cb6bfc634dd","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"20-zhou","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":25.99,"min_quantity":1}],"weight":"0","compare_at_price":"31.99","price":"25.99","retail_price":"31.99","available":true,"url":"\/products\/20-pack-vacuum-storage-bags-space-saver-bags-4-jumbo-4-large-4-medium-4-small-4-roll-compression-for-comforters-and-blankets-sealer-clothes-storage?variant=b45e61c2-b25b-4c4c-bdd6-79473c707a93","available_quantity":999999999,"options":[],"off_ratio":"19","flashsale_info":{"variant_id":"b45e61c2-b25b-4c4c-bdd6-79473c707a93","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":"19","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}
` }()}