`;
})
.join('');
// Build CTA HTML, respecting the new showSessionCTA layer
let ctaHtml = '';
if (showSessionCTA) {
if (showWatchOnDemandCTA) {
ctaHtml = `
Watch On Demand (opens in a new tab)
`;
} else if (showAddToScheduleCTA) {
ctaHtml = `
Add to Schedule (opens in a new tab)
`;
}
}
// build the card HTML, using those flags for CTAs & room/times
const { room = '', utcStartTime = '', utcEndTime = '' } = times[0] || {};
const roomTimesHtml = `
${showRoomDetails && room ? `
${room} | ` : ''}
${showSessionTimes && utcStartTime && utcEndTime
? `
${displaySessionTimes(utcStartTime, utcEndTime)}`
: ''}`;
const card = document.createElement('div');
card.className = 'ta-session-card collapsed';
card.innerHTML = `
${(mobiletagsAttribute || sessionTypesAttribute || productionTypesAttribute) ? `
${sessionTypesAttribute ? displayTags(sessionTypesAttribute) : ''}
${mobiletagsAttribute ? displayTags(mobiletagsAttribute) : ''}
${productionTypesAttribute ? displayTags(productionTypesAttribute) : ''}
` : ''}
${showHyperLinkForSessionTitle
? `${title} (opens in a new tab)`
: `${title}`
} [${sessionCode}]
${speakersHtml ? `
${speakersHtml}
` : ''}
${abstract ? abstract : ''}
${ctaHtml}
${roomTimesHtml}
`;
sessionDetailsElement.appendChild(card);
// same “Show More” logic as before
const desc = card.querySelector('.ta-session-description');
const showMore = card.querySelector('.ta-show-more');
desc.style.maxHeight = `${desc.scrollHeight}px`;
if (desc.scrollHeight toggleDescription(card));
showMoreBtn.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
toggleDescription(card);
}
});
}
function toggleDescription(cardElement) {
const descriptionElement = cardElement.querySelector('.ta-session-description');
const showMoreBtn = cardElement.querySelector('.ta-show-more-btn');
const showMoreText = showMoreBtn.querySelector('span.ta-show-more-txt');
const showMoreChevron = showMoreBtn.querySelector('span.fa');
const isCollapsed = cardElement.classList.contains('collapsed');
if (isCollapsed) {
showMoreText.innerText = pageData['showLess'] || 'Show Less';
showMoreChevron.classList.remove('fa-chevron-down');
showMoreChevron.classList.add('fa-chevron-up');
showMoreBtn.setAttribute('aria-expanded', 'true');
descriptionElement.setAttribute('aria-hidden', 'false');
} else {
showMoreText.innerText = pageData['showMore'] || 'Show More';
showMoreChevron.classList.remove('fa-chevron-up');
showMoreChevron.classList.add('fa-chevron-down');
showMoreBtn.setAttribute('aria-expanded', 'false');
descriptionElement.setAttribute('aria-hidden', 'true');
}
cardElement.classList.toggle('collapsed');
}
function fetchSessionIds() {
// displayConfig is already set in init() with all necessary API configuration
const featuredSessions = [];
for (var i = 1; i