bootstrap-select
Version:
The jQuery plugin that brings select elements into the 21st century with intuitive multiselection, searching, and much more. Now with Bootstrap 4 support.
96 lines (75 loc) • 2.67 kB
JavaScript
/* Highlight */
$( document ).ready(function() {
hljs.initHighlightingOnLoad();
$('table').addClass('table table-striped table-hover');
$('pre').addClass('highlight');
});
/* Prevent disabled links from causing a page reload */
$("li.disabled a").click(function() {
event.preventDefault();
});
var $searchQuery = $('#mkdocs-search-query');
$searchQuery.parent().on('show.bs.dropdown', function () {
if (!$searchQuery[0].value) return false;
});
function formatResults (results) {
var sections = {},
html = [];
for (var i = 0; i < results.length; i++) {
var result = results[i],
path = result.location.split('/'),
pathBase = path[0];
if (pathBase.indexOf('#') !== -1) {
pathBase = pathBase.split('#')[0];
}
if (!sections.hasOwnProperty(pathBase)) {
sections[pathBase] = [];
}
result.section = pathBase || 'Getting Started';
result.section = result.section.charAt(0).toUpperCase() + result.section.slice(1);
sections[pathBase].push(result);
}
var sectionKeys = Object.keys(sections);
for (var j = 0; j < sectionKeys.length; j++) {
var section = sections[sectionKeys[j]];
if (result)
html.push('<a class="h6 dropdown-header text-primary" href="' + joinUrl(base_url, sectionKeys[j]) + '">'+ section[0].section + '</a>');
for (var k = 0; k < section.length; k++) {
var result = section[k];
if (result.title !== result.section) {
html.push('<a class="dropdown-item" href="' + joinUrl(base_url, result.location) + '">' + result.title + '</a>');
}
}
if (j !== sectionKeys.length - 1) html.push('<div class="dropdown-divider"></div>');
}
return html.join('');
}
function displayResults (results) {
var search_results = document.getElementById("mkdocs-search-results");
while (search_results.firstChild) {
search_results.removeChild(search_results.firstChild);
}
if (results.length > 0) {
var html = formatResults(results);
search_results.insertAdjacentHTML('beforeend', html);
} else {
search_results.insertAdjacentHTML('beforeend', "<div class='dropdown-item'>No results found</div>");
}
$searchQuery.dropdown('show');
}
// enable fuzzy searching
function search (query) {
if (!allowSearch) {
console.error('Assets for search still loading');
return;
}
var resultDocuments = [];
var results = index.search(query + '~2'); // fuzzy
for (var i=0; i < results.length; i++){
var result = results[i];
doc = documents[result.ref];
doc.summary = doc.text.substring(0, 200);
resultDocuments.push(doc);
}
return resultDocuments;
}