- 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>
79 lines
No EOL
1.9 KiB
JavaScript
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();
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
|
|
} |