TonSite.ca
Menu






Comparateur de Prix








`;

const printWindow = window.open('', '', 'width=800,height=600');
printWindow.document.write(html);
printWindow.document.close();
}
};

// ====================================
// HEADER STICKY
// ====================================
const headerManager = {
init() {
const header = document.getElementById('header-sticky');
const placeholder = document.getElementById('header-placeholder');

let lastScroll = 0;
const headerHeight = header.offsetHeight;

window.addEventListener('scroll', () => {
const currentScroll = window.pageYOffset;

if (currentScroll > headerHeight) {
if (!header.classList.contains('is-stuck')) {
header.classList.add('is-stuck');
placeholder.classList.add('active');
placeholder.style.height = headerHeight + 'px';
}
} else {
header.classList.remove('is-stuck');
placeholder.classList.remove('active');
}

lastScroll = currentScroll;
});
}
};

// ====================================
// ÉVÉNEMENTS GLOBAUX
// ====================================
function setupEvents() {
// Recherche avec debounce
const searchInput = document.getElementById('searchInput');
searchInput.addEventListener('input', utils.debounce((e) => {
state.filters.search = e.target.value;
dataManager.applyFilters();
}, 300));

// Filtres
document.getElementById('categoryFilter').addEventListener('change', (e) => {
state.filters.category = e.target.value;
dataManager.applyFilters();
});

document.getElementById('storeFilter').addEventListener('change', (e) => {
state.filters.store = e.target.value;
dataManager.applyFilters();
});

document.getElementById('sortFilter').addEventListener('change', (e) => {
state.filters.sort = e.target.value;
dataManager.applyFilters();
});

// Bouton "Voir Plus"
document.getElementById('loadMoreBtn').addEventListener('click', () => {
dataManager.loadMore();
});

// Dock buttons
document.getElementById('wishlistBtn').addEventListener('click', () => {
wishlistManager.showModal();
});

document.getElementById('printBtn').addEventListener('click', () => {
printManager.print();
});

// Modal close
document.getElementById('modalClose').addEventListener('click', () => {
modal.close();
});

document.getElementById('modalOverlay').addEventListener('click', (e) => {
if (e.target.id === 'modalOverlay') {
modal.close();
}
});

// Lightbox close
document.getElementById('lightbox').addEventListener('click', () => {
lightbox.close();
});
}

// ====================================
// INITIALISATION
// ====================================
async function init() {
wishlistManager.init();
headerManager.init();
setupEvents();
await dataManager.fetchProducts();
}

// Démarrer l'application
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}

})();


S’ouvre dans un nouvel onglet