LiberTalk!

🎞️ Spotlight Videos

View all

For You

417 stories
(function(){ const list = document.getElementById('feedList'); const loader = document.getElementById('feedLoader'); const btn = document.getElementById('loadMoreBtn'); if(!list || !loader || loader.dataset.hasMore !== '1') return; let loading = false; let page = parseInt(loader.dataset.page || '1', 10); const params = new URLSearchParams(window.location.search); async function loadMore(){ if(loading || loader.dataset.hasMore !== '1') return; loading = true; if(btn) btn.style.display = 'none'; loader.classList.add('is-loading'); params.set('ajax','feed'); params.set('page', String(page + 1)); try{ const res = await fetch('index.php?' + params.toString(), { headers:{'X-Requested-With':'fetch'} }); const data = await res.json(); if(data && data.html){ list.insertAdjacentHTML('beforeend', data.html); page = data.page || (page + 1); loader.dataset.page = String(page); loader.dataset.hasMore = data.hasMore ? '1' : '0'; } else { loader.dataset.hasMore = '0'; } } catch(e){ if(btn) btn.style.display = ''; } loader.classList.remove('is-loading'); loading = false; if(btn && loader.dataset.hasMore === '1') btn.style.display = ''; if(loader.dataset.hasMore !== '1') loader.innerHTML = ''; } if(btn) btn.addEventListener('click', loadMore); const io = 'IntersectionObserver' in window ? new IntersectionObserver(entries => { if(entries.some(e => e.isIntersecting)) loadMore(); }, {rootMargin:'700px 0px'}) : null; if(io) io.observe(loader); })(); (function(){ function closeMore(){ document.querySelectorAll('.more-nav.open').forEach(function(n){ n.classList.remove('open'); var b=n.querySelector('.more-btn'); if(b) b.setAttribute('aria-expanded','false'); }); } document.addEventListener('click', function(e){ var btn = e.target.closest('.more-btn'); if(btn){ e.preventDefault(); e.stopPropagation(); var nav = btn.closest('.more-nav'); var was = nav.classList.contains('open'); closeMore(); if(!was){ nav.classList.add('open'); btn.setAttribute('aria-expanded','true'); } return; } if(!e.target.closest('.more-menu')) closeMore(); }); document.addEventListener('keydown', function(e){ if(e.key === 'Escape') closeMore(); }); })();