Skip links
/* Galeria AMCI 2027 (pagina 7154) - agrupacion del lightbox + filtros por categoria. * * El widget `image` del core de Elementor llama a add_lightbox_data_attributes() * SIN pasar $group_id (elementor/includes/widgets/image.php::render()), de modo * que nunca emite `data-elementor-lightbox-slideshow` y cada foto se abriria * sola, sin flechas de anterior/siguiente. El lightbox agrupa exactamente por * ese atributo y lo lee del DOM en el momento del clic * (assets/js/frontend.js -> selectors.slideshow), asi que lo asignamos aqui. * * Al filtrar por categoria se reescribe el atributo para que las flechas * recorran unicamente las fotos visibles. */ (function () { 'use strict'; var GROUP = 'galeria-amci'; function init() { var gal = document.querySelector('.amci-gal'); if (!gal) { return; } var tiles = [].slice.call(gal.querySelectorAll('.amci-tile')); var boxes = [].slice.call(gal.querySelectorAll('.amci-row, .amci-col')); var chips = [].slice.call(document.querySelectorAll('.amci-chip')); var count = document.querySelector('.amci-count .elementor-icon-list-text'); if (!tiles.length) { return; } function catOf(el) { var m = /amci-chip-([a-z]+)/.exec(el.className || ''); return m ? m[1] : 'all'; } function apply(cat) { var shown = 0; tiles.forEach(function (t) { var ok = (cat === 'all') || t.classList.contains('amci-cat-' + cat); t.classList.toggle('amci-off', !ok); if (ok) { shown++; } var a = t.querySelector('a[data-elementor-open-lightbox]'); if (!a) { return; } if (ok) { a.setAttribute('data-elementor-lightbox-slideshow', GROUP); } else { a.removeAttribute('data-elementor-lightbox-slideshow'); } }); boxes.forEach(function (b) { b.classList.toggle('amci-off', !b.querySelector('.amci-tile:not(.amci-off)')); }); chips.forEach(function (c) { var on = catOf(c) === cat; c.classList.toggle('amci-chip--on', on); var l = c.querySelector('a, button'); if (l) { l.setAttribute('aria-pressed', on ? 'true' : 'false'); } }); if (count) { count.textContent = shown + (shown === 1 ? ' imagen' : ' imágenes') + ' · XVII Congreso, Cali'; } } chips.forEach(function (c) { c.addEventListener('click', function (e) { if (e.target.closest('a')) { e.preventDefault(); } apply(catOf(c)); }); }); apply('all'); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();