mirror of
https://github.com/lancedikson/bowser
synced 2026-03-02 03:40:27 +00:00
docs(bowser): auto-generate docs
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
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 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 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
|
||||
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++;
|
||||
}
|
||||
});
|
||||
|
||||
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";
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user