-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,20 @@ | ||
function hideAllButCurrent(){ | ||
//by default all submenut items are hidden | ||
$("nav > ul > li > ul li").hide(); | ||
//but we need to rehide them for search | ||
document.querySelectorAll("nav > ul > li > ul li").forEach(function(parent) { | ||
parent.style.display = "none"; | ||
}); | ||
|
||
//only current page (if it exists) should be opened | ||
var file = window.location.pathname.split("/").pop(); | ||
$("nav > ul > li > a[href^='"+file+"']").parent().find("> ul li").show(); | ||
var file = window.location.pathname.split("/").pop().replace(/\.html/, ''); | ||
document.querySelectorAll("nav > ul > li > a").forEach(function(parent) { | ||
var href = parent.attributes.href.value.replace(/\.html/, ''); | ||
if (file === href) { | ||
parent.parentNode.querySelectorAll("ul li").forEach(function(elem) { | ||
elem.style.display = "block"; | ||
}); | ||
} | ||
}); | ||
} | ||
$( document ).ready(function() { | ||
hideAllButCurrent(); | ||
}); | ||
|
||
hideAllButCurrent(); |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
function scrollToNavItem() { | ||
var path = window.location.href.split('/').pop().replace(/\.html/, ''); | ||
document.querySelectorAll('nav a').forEach(function(link) { | ||
var href = link.attributes.href.value.replace(/\.html/, ''); | ||
if (path === href) { | ||
link.scrollIntoView({block: 'center'}); | ||
return; | ||
} | ||
}) | ||
} | ||
|
||
scrollToNavItem(); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
//IE Fix, src: https://www.reddit.com/r/programminghorror/comments/6abmcr/nodelist_lacks_foreach_in_internet_explorer/ | ||
if (typeof(NodeList.prototype.forEach)!==typeof(alert)){ | ||
NodeList.prototype.forEach=Array.prototype.forEach; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,83 @@ | ||
$( document ).ready(function() { | ||
jQuery.expr[':'].Contains = function(a,i,m){ | ||
return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0; | ||
}; | ||
//on search | ||
$("#nav-search").on("keyup", function(event) { | ||
var search = $(this).val(); | ||
if (!search) { | ||
//no search, show all results | ||
$("nav > ul > li").show(); | ||
|
||
if(typeof hideAllButCurrent === "function"){ | ||
//let's do what ever collapse wants to do | ||
hideAllButCurrent(); | ||
} | ||
else{ | ||
//menu by default should be opened | ||
$("nav > ul > li > ul li").show(); | ||
} | ||
|
||
var searchAttr = 'data-search-mode'; | ||
function contains(a,m){ | ||
return (a.textContent || a.innerText || "").toUpperCase().indexOf(m) !== -1; | ||
}; | ||
|
||
//on search | ||
document.getElementById("nav-search").addEventListener("keyup", function(event) { | ||
var search = this.value.toUpperCase(); | ||
|
||
if (!search) { | ||
//no search, show all results | ||
document.documentElement.removeAttribute(searchAttr); | ||
|
||
document.querySelectorAll("nav > ul > li:not(.level-hide)").forEach(function(elem) { | ||
elem.style.display = "block"; | ||
}); | ||
|
||
if (typeof hideAllButCurrent === "function"){ | ||
//let's do what ever collapse wants to do | ||
hideAllButCurrent(); | ||
} else { | ||
//menu by default should be opened | ||
document.querySelectorAll("nav > ul > li > ul li").forEach(function(elem) { | ||
elem.style.display = "block"; | ||
}); | ||
} | ||
else{ | ||
//we are searching | ||
//show all parents | ||
$("nav > ul > li").show(); | ||
//hide all results | ||
$("nav > ul > li > ul li").hide(); | ||
//show results matching filter | ||
$("nav > ul > li > ul").find("a:Contains("+search+")").parent().show(); | ||
//hide parents without children | ||
$("nav > ul > li").each(function(){ | ||
if($(this).find("a:Contains("+search+")").length == 0 && $(this).children("ul").length === 0){ | ||
//has no child at all and does not contain text | ||
$(this).hide(); | ||
} else { | ||
//we are searching | ||
document.documentElement.setAttribute(searchAttr, ''); | ||
|
||
//show all parents | ||
document.querySelectorAll("nav > ul > li").forEach(function(elem) { | ||
elem.style.display = "block"; | ||
}); | ||
//hide all results | ||
document.querySelectorAll("nav > ul > li > ul li").forEach(function(elem) { | ||
elem.style.display = "none"; | ||
}); | ||
//show results matching filter | ||
document.querySelectorAll("nav > ul > li > ul a").forEach(function(elem) { | ||
if (!contains(elem.parentNode, search)) { | ||
return; | ||
} | ||
elem.parentNode.style.display = "block"; | ||
}); | ||
//hide parents without children | ||
document.querySelectorAll("nav > ul > li").forEach(function(parent) { | ||
var countSearchA = 0; | ||
parent.querySelectorAll("a").forEach(function(elem) { | ||
if (contains(elem, search)) { | ||
countSearchA++; | ||
} | ||
else if($(this).find("a:Contains("+search+")").length == 0 && $(this).find("ul").children(':visible').length == 0){ | ||
//has no visible child and does not contain text | ||
$(this).hide(); | ||
}); | ||
|
||
var countUl = 0; | ||
var countUlVisible = 0; | ||
parent.querySelectorAll("ul").forEach(function(ulP) { | ||
// count all elements that match the search | ||
if (contains(ulP, search)) { | ||
countUl++; | ||
} | ||
|
||
// count all visible elements | ||
var children = ulP.children | ||
for (i=0; i<children.length; i++) { | ||
var elem = children[i]; | ||
if (elem.style.display != "none") { | ||
countUlVisible++; | ||
} | ||
} | ||
}); | ||
} | ||
}); | ||
|
||
if (countSearchA == 0 && countUl === 0){ | ||
//has no child at all and does not contain text | ||
parent.style.display = "none"; | ||
} else if(countSearchA == 0 && countUlVisible == 0){ | ||
//has no visible child and does not contain text | ||
parent.style.display = "none"; | ||
} | ||
}); | ||
} | ||
}); |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.