yannstatic/_includes/scripts/components/lightbox.js
2024-10-31 20:18:37 +01:00

50 lines
1.7 KiB
JavaScript

{%- include scripts/utils/imagesLoad.js -%}
(function () {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
var $pageGalleryModal = $('.js-page-gallery-modal');
var $images = $('.page__content').find('img:not(.lightbox-ignore)');
window.imagesLoad($images).then(function() {
/* global Gallery */
var pageGalleryModal = $pageGalleryModal.modal({ onChange: handleModalChange });
var gallery = null;
var modalVisible = false;
var i, items = [], image, item;
if($images && $images.length > 0) {
for (i = 0; i < $images.length; i++) {
image = $images.eq(i);
if (image.get(0).naturalWidth > 800) {
items.push({ src: image.attr('src'), w: image.get(0).naturalWidth, h: image.get(0).naturalHeight, $el: image});
}
}
}
if(items.length > 0) {
gallery = new Gallery('.gallery', items);
gallery.setOptions({ disabled: !modalVisible });
gallery.init();
for (i = 0; i < items.length; i++) {
item = items[i];
item.$el && (item.$el.addClass('popup-image'), item.$el.on('click', (function() {
var index = i;
return function() {
pageGalleryModal.show();
gallery.setOptions({ initialSlide: index });
gallery.refresh(true, { animation: false });
};
})()));
}
}
function handleModalChange(visible) {
modalVisible = visible;
gallery && gallery.setOptions({ disabled: !modalVisible });
}
$pageGalleryModal.on('click', function() {
pageGalleryModal.hide();
});
});
});
})();