diff --git a/slidify.js b/slidify.js index 6b78bd6..2935247 100644 --- a/slidify.js +++ b/slidify.js @@ -2,15 +2,22 @@ window.addEventListener('load', init); let slides; let currentSlide; + let topicList; +let topicLinks; +let topicListSearch; + +const activeTopicLinkClass = 'active-topic-link'; +const notMatchingSearchTermsClass = 'not-matching-search-terms'; +const topicListSearchClass = 'topic-list-search'; function init() { slides = Array.from(document.querySelectorAll('article')); for (let i = 0; i < slides.length; i++) { slides[i].id = `slide${i}`; } - resumeOrGoToStart(); topicList = createTopicList(); + resumeOrGoToStart(); document.addEventListener('keydown', onKeyPressed); } @@ -27,6 +34,13 @@ function goToSlide(index) { if (index >= 0 && index < slides.length) { currentSlide = index; window.location.href = window.location.href.split('#')[0] + `#slide${index}`; + + let oldActiveTopicLink = topicList.querySelector(`.${activeTopicLinkClass}`); + if (oldActiveTopicLink != null) { + oldActiveTopicLink.classList.remove(activeTopicLinkClass); + } + let newActiveTopicLink = topicList.querySelector(`[data-slide="slide${index}"]`); + newActiveTopicLink.classList.add(activeTopicLinkClass); } } @@ -71,6 +85,9 @@ function onKeyPressed(event) { case 17: // ctrl toggleTopicList(); break; + case 27: // esc + hideTopicList(); + break; } } @@ -99,7 +116,7 @@ function showPreviousFragment() { function getTopicListContent() { let results = [...document.querySelectorAll('h1, h2, h3, h4, h5, h6')]; - let resultHtml = '