index-main/assets/js/script.js
isUnknown 3d9a0421b3 feat: lightbox desktop pour images et galeries
- Lightbox custom avec Swiper (pas de nouvelle dépendance)
- Déclenché sur les figures éligibles uniquement (exclut figures dans
  <a> et dans les cards avec .link-block)
- Galeries : ouvre toutes les slides au bon index
- Fermeture : bouton ✕, clic overlay, Echap
- Captions : figcaption, p.caption (dans figure ou sibling)
- Cursor zoom-in desktop uniquement via figure[data-lightbox]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 15:57:35 +01:00

79 lines
No EOL
1.9 KiB
JavaScript

import { headerToggle, headerScrollVisibility } from './header.js';
import { copyLink } from './share.js';
import { backToTop } from './back-to-top.js';
import { themeToggle } from './themeToggle.js';
import { playVideo } from './hero-video.js';
import { initDropdowns } from './dropdown.js';
import { initSwipers } from './swipers.js';
import { initSliderBeforeAfter} from './sliderBeforeAfter.js';
import { navInvestigation } from './investigation.js';
import { progressBar, scrollBack} from './bottom-bar.js';
import { initSort } from './sort.js';
import { initLightbox } from './lightbox.js';
const responsiveMedium = 1080;
const responsiveSmall = 768;
const responsiveSmallX = 560;
window.onload = async function () {
console.log("SCRIPT LOADED");
headerToggle();
themeToggle();
backToTop();
initSliderBeforeAfter();
copyLink();
playVideo();
initDropdowns(responsiveSmall, responsiveSmallX);
initSwipers();
initLightbox();
progressBar();
scrollBack();
navInvestigation();
var elems = document.querySelectorAll('.grid-masonry');
var msnries = [];
function initMasonry() {
if (!elems.length) return;
if (window.innerWidth >= responsiveSmall) {
elems.forEach(function(elem, i) {
if (!msnries[i]) {
msnries[i] = new Masonry(elem, {
itemSelector: '.card--block:not(.is-sort-hidden)',
columnWidth: '.grid-sizer',
percentPosition: true,
gutter: 26
});
}
});
} else {
msnries.forEach(function(msnry, i) {
if (msnry) {
msnry.destroy();
msnries[i] = null;
}
});
}
}
initMasonry();
window.addEventListener('resize', initMasonry);
initSort(() => {
msnries.forEach(function(msnry) {
if (msnry) {
msnry.reloadItems();
msnry.layout();
}
});
});
}