Tougaloo by the Numbers

Latest News

Stay updated with the latest happenings at Tougaloo College

'">` : `
`; return `
${imageContent}
${news.category} ${formatDate(news.date)}

${news.title}

${news.excerpt}

Read More
`; } function renderNews(){ const wrapper = document.getElementById('newsScrollWrapper'); const sorted = [...newsData].sort((a,b)=> new Date(b.date) - new Date(a.date)); wrapper.innerHTML = sorted.map(createCompactNewsCard).join(''); } function setupScrolling(){ const wrapper = document.getElementById('newsScrollWrapper'); const prevBtn = document.getElementById('scrollPrev'); const nextBtn = document.getElementById('scrollNext'); prevBtn.type = 'button'; nextBtn.type = 'button'; prevBtn.setAttribute('aria-controls','newsScrollWrapper'); nextBtn.setAttribute('aria-controls','newsScrollWrapper'); const getScrollStep = () => { const card = wrapper.querySelector('.news-card-compact'); const gap = parseFloat(getComputedStyle(wrapper).gap) || 0; return card ? card.offsetWidth + gap : Math.round(wrapper.clientWidth * 0.9); }; const updateButtons = () => { const maxScroll = wrapper.scrollWidth - wrapper.clientWidth - 1; prevBtn.disabled = wrapper.scrollLeft <= 0; nextBtn.disabled = wrapper.scrollLeft >= maxScroll; }; prevBtn.addEventListener('click', () => { wrapper.scrollBy({ left: -getScrollStep(), behavior:'smooth' }); }); nextBtn.addEventListener('click', () => { wrapper.scrollBy({ left: getScrollStep(), behavior:'smooth' }); }); wrapper.addEventListener('scroll', updateButtons); wrapper.addEventListener('wheel', (e) => { if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) return; e.preventDefault(); wrapper.scrollBy({ left: e.deltaY > 0 ? getScrollStep() : -getScrollStep(), behavior:'smooth' }); }, { passive:false }); wrapper.tabIndex = 0; wrapper.addEventListener('keydown', (e) => { if (e.key === 'ArrowRight') { e.preventDefault(); wrapper.scrollBy({ left:getScrollStep(), behavior:'smooth' }); } if (e.key === 'ArrowLeft') { e.preventDefault(); wrapper.scrollBy({ left:-getScrollStep(), behavior:'smooth' }); } }); const ro = new ResizeObserver(updateButtons); ro.observe(wrapper); requestAnimationFrame(updateButtons); } function init(){ renderNews(); setupScrolling(); } document.addEventListener('DOMContentLoaded', init);