48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
|
|
/**
|
||
|
|
* Gestion de la sélection de taille pour les produits
|
||
|
|
* Met à jour l'attribut data-item-size au changement de sélection
|
||
|
|
*/
|
||
|
|
|
||
|
|
(function() {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Initialise la gestion des tailles
|
||
|
|
*/
|
||
|
|
function initSizeSelector() {
|
||
|
|
const sizeRadios = document.querySelectorAll('#list-size input[type="radio"]');
|
||
|
|
const addToCartButton = document.querySelector('.add-to-cart');
|
||
|
|
|
||
|
|
if (!addToCartButton) {
|
||
|
|
console.warn('Bouton add-to-cart non trouvé');
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Définir la taille initiale (taille sélectionnée par défaut)
|
||
|
|
const checkedRadio = document.querySelector('#list-size input[type="radio"]:checked');
|
||
|
|
if (checkedRadio) {
|
||
|
|
addToCartButton.setAttribute('data-item-size', checkedRadio.value);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Écouter les changements de sélection
|
||
|
|
sizeRadios.forEach(radio => {
|
||
|
|
radio.addEventListener('change', function() {
|
||
|
|
// Mettre à jour l'attribut data-item-size
|
||
|
|
addToCartButton.setAttribute('data-item-size', this.value);
|
||
|
|
|
||
|
|
// Optionnel: gérer la classe is-selected sur les li parents
|
||
|
|
// (pour compatibilité avec d'éventuels styles existants)
|
||
|
|
const allLi = document.querySelectorAll('#list-size li');
|
||
|
|
allLi.forEach(li => li.classList.remove('is-selected'));
|
||
|
|
this.closest('li').classList.add('is-selected');
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Initialisation au chargement de la page
|
||
|
|
*/
|
||
|
|
document.addEventListener('DOMContentLoaded', initSizeSelector);
|
||
|
|
|
||
|
|
})();
|