Paquet définitif des produits les plus vendus
7535507701941
Rated 4.8 out of 5 stars
19,706 Reviews
variant.price){
onSale = true;
}else{
onSale = false;
}
}"
@set-onetime-price.window="if($event.detail.id == 7535507701941) {
if(!$event.detail.subscribe){
variant.price = $event.detail.new_price;
variant.original_price = $event.detail.new_original_price;
}
}"
@set-subscription-price.window="if($event.detail.id == 7535507701941) {
if($event.detail.subscribe){
variant.price = $event.detail.new_price;
variant.original_price = $event.detail.new_original_price;
}
}"
@discounted-price.window="if($event.detail.id == 7535507701941) {
variant.price = $event.detail.new_price;
variant.original_price = $event.detail.new_original_price;
code_discount_active = $event.detail.code_discount_active;
}"
@variant-updated.window="variant.price = $event.detail.variant.price; if(!isBundle){ soldOut = !$event.detail.availibility }"
@discount-applied.window="$nextTick(() => checkDiscountCode(true))"
@discount-removed.window="$nextTick(() => checkDiscountCode(true))"
class="price text-xl justify-center lg:justify-between font-semibold flex gap-x-2 items-center price--on-sale price--show-badge ">
Prix unitaire
par
Type:
{
discount_percentage = $event.detail?.percentage || 0;
})"
x-init="$watch('selected', value => {
if (value.length != total_items) {
discount_percentage = 0;
}else{
discount_percentage = 0;
}
})"
x-data="{
renderPrice(price){
let total = price;
if(this.discount_percentage > 0){
total = price - (price * (this.discount_percentage / 100));
}
return Unick.formatMoney(total);
},
selected: [],
fixed_product: false,
discount_percentage: 0,
total_items: 4,
imgSrc(src, width) {
if (!src) return '';
if (/[?&]width=/.test(src)) return src.replace(/([?&]width=)\d+/, '$1' + width);
return src + (src.includes('?') ? '&' : '?') + 'width=' + width;
},
getSrcset(src) {
if (!src) return '';
return [72, 100, 144, 200].map(w => this.imgSrc(src, w) + ' ' + w + 'w').join(', ');
},
add(item) {
this.selected.push(item)
},
remove(id) {
this.selected = this.selected.filter(item => item.id !== id)
},
isInBundle(id) {
return this.selected.some(item => item.id === id)
},
priceBeforeDiscount(){
let total = 0;
this.selected.forEach(function (item) {
total += item.price;
})
return total;
},
totalPrice(){
let total = 0;
this.selected.forEach(function (item) {
total += item.price;
})
total = total - (total * (this.discount_percentage / 100));
let extraDiscount = 0;
let discount = 0;
this.selected.forEach(function (item) {
item.tags.forEach(function (tag) {
if(tag.includes('discount:') || tag.includes('Discount:') || tag.includes('discount: ') || tag.includes('Discount: ')){
discount = tag.split(':')[1];
}
})
})
if(discount > 0){
extraDiscount = total * (discount / 100);
}
return total - extraDiscount;
},
addToCart(){
let cartObj = [];
let bundleTitle = `Paquet définitif des produits les plus vendus`;
let bundleHandle = `paquet-definitif-des-produits-les-plus-vendus`;
let bundleCount = 4;
let bundleQty = 1;
let index = 0;
// Update button text to 'adding...'
this.$refs.addToCartButton.textContent = 'Adding...';
this.selected.forEach(function (item) {
cartObj.push({
quantity: 1,
id: item.variants[0].id,
properties: {
'_fbt_bundle': bundleTitle,
'_fbt_bundle_handle': bundleHandle,
'_fbt_bundle_count': bundleCount,
}
})
})
if(this.fixed_product && this.total_items == this.selected.length){
cartObj = [];
cartObj.push({
quantity: 1,
id: this.fixed_product,
})
}
fetch(routes.cart_add_url + '.js', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
items: cartObj
})
})
.then(response => {
// Update button text back to 'add to cart'
this.$refs.addToCartButton.textContent = 'Add to cart';
// Update cart with event dispatch
this.$dispatch('update-cart', { cart: response });
// Open cart after adding product
this.$dispatch('toggle-cart-drawer');
});
}
}">
+
Fréquemment achetés ensemble
Total price:
Paquet définitif des produits les plus vendus
$112.00
Bonnet oversize en satin - Blush
$43.00
Assortiment de 5 chouchous de sommeil en satin
$20.00
Conditionneur hydratant sans rinçage au lait d'argan
$30.00
{
let mainAddToCart = document.querySelector('.product__info-wrapper .button-add-to-cart, .product__info-wrapper .product-form__submit');
if(mainAddToCart) {
let rect = mainAddToCart.getBoundingClientRect();
// Hide floating cart when main button is visible (with some buffer)
show = rect.top > window.innerHeight || rect.bottom < 0;
} else {
// If main button not found, show floating cart
show = true;
}
})"
x-init="$nextTick(() => {
// Delay initialization to ensure Alpine has rendered the main add-to-cart button
setTimeout(() => {
let mainAddToCart = document.querySelector('.product__info-wrapper .button-add-to-cart, .product__info-wrapper .product-form__submit');
if(mainAddToCart) {
let rect = mainAddToCart.getBoundingClientRect();
show = rect.top > window.innerHeight || rect.bottom < 0;
} else {
// Fallback: show sticky cart if main button not found after delay
show = true;
}
}, 500);
})"
class="add-to-cart-footer p-3 bg-white text-black fixed bottom-0 w-full z-20 shadow border-t">
{
selectOptions[$event.detail?.position] = $event.detail?.event?.target.value;
let getVariant = Unick.findVariant(variants , selectOptions);
selectedVariant = (getVariant) ? getVariant : null;
})">
Paquet définitif des produits les plus vendus
variant.price){
onSale = true;
}else{
onSale = false;
}
}"
@set-onetime-price.window="if($event.detail.id == 7535507701941) {
if(!$event.detail.subscribe){
variant.price = $event.detail.new_price;
variant.original_price = $event.detail.new_original_price;
}
}"
@set-subscription-price.window="if($event.detail.id == 7535507701941) {
if($event.detail.subscribe){
variant.price = $event.detail.new_price;
variant.original_price = $event.detail.new_original_price;
}
}"
@discounted-price.window="if($event.detail.id == 7535507701941) {
variant.price = $event.detail.new_price;
variant.original_price = $event.detail.new_original_price;
code_discount_active = $event.detail.code_discount_active;
}"
@variant-updated.window="variant.price = $event.detail.variant.price; if(!isBundle){ soldOut = !$event.detail.availibility }"
@discount-applied.window="$nextTick(() => checkDiscountCode(true))"
@discount-removed.window="$nextTick(() => checkDiscountCode(true))"
class="price text-xl justify-center lg:justify-between font-semibold flex gap-x-2 items-center price--on-sale price--show-badge ">
Prix unitaire
par
{
qty = $event.detail.qty;
})"
x-init="$nextTick(() => {
$watch('qty', value => {
console.log('qty', value);
$dispatch('quantity-updated', { qty: value });
});
});"
@quantity-updated.window="$nextTick(() => {
qty = $event.detail.qty;
})"
x-data="{ qty: 1 }">
Améliorez votre routine beauté avec nos indispensables
1. Favoriser la croissance et la force des cheveux
2. Une peau et des cheveux plus sains
3. Un gain de temps
4. Améliorez votre quotidien