_includes/tocScript.html (43 lines of code) (raw):

<!-- Start _includes/tocScript.html --> <script> (function () { var findLineItem = function (path) { return document.querySelector(`#toc [href="${path}"]`); }; function findNavItem(path) { return document.querySelector(`.nav [href="${path}"]`); } var highlighLineItem = function (element) { element.classList.add('highlight'); }; var checkHasClass = function (element, className) { return element.className.split(' ').find(function (item) { return item === className || '' }) } var findAllCollapseParents = function (element) { var collapseMenus = []; var elementPointer = element; while (elementPointer !== document.body) { if (checkHasClass(elementPointer, 'collapse')) { collapseMenus.push(elementPointer); } elementPointer = elementPointer.parentElement } return collapseMenus }; var openMenuItem = function (element) { // $(element).collapse('show') would start a transition, adding `in` class instead. element.classList.add('in'); }; var openAllFromList = function (elementList) { elementList.forEach(openMenuItem); }; var highlightAndOpenMenu = function () { // Highlight & expand nav item in the TOC var currentLineItem = findLineItem(document.location.pathname); highlighLineItem(currentLineItem); openAllFromList(findAllCollapseParents(currentLineItem)); // Highlight nav item in top navigation highlighLineItem(findNavItem(document.location.pathname)); }; $(highlightAndOpenMenu); }()); </script> <!-- End _includes/tocScript.html -->