atlas-guide
Version:
Atlas is living style-guides & pattern library static site generator with extensive CSS monitoring and components info that could be used virtually with any scss/css project
54 lines (44 loc) • 1.61 kB
JavaScript
;
(function() {
const asidePanel = document.getElementById('js-atlas-aside');
const searchField = document.getElementById('js-atlas-search');
const searchClearBtn = document.getElementById('js-atlas-search-clear');
const links = document.querySelectorAll('.js-atlas-nav-ln');
const waiteForSearch = 'js-searching';
const hasResults = 'js-found';
const isRelevant = 'js-relevant';
function startSearch() {
asidePanel.classList.add(waiteForSearch);
}
function finishSearch() {
asidePanel.classList.remove(waiteForSearch);
}
function clearSearch() {
asidePanel.classList.remove(hasResults);
links.forEach(link => link.classList.remove(isRelevant));
searchField.value = '';
}
function search(event) {
const term = event.target.value;
if (!term) {
clearSearch();
}
links.forEach(link => {
if (link.getAttribute('href') === '') {
return;
}
const elementText = link.textContent;
if (term.length && ~elementText.indexOf(term)) {
asidePanel.classList.add(hasResults);
links[0].focus();
link.classList.add(isRelevant);
} else {
link.classList.remove(isRelevant);
}
});
}
searchField.addEventListener('keyup', search);
searchField.addEventListener('focus', startSearch);
searchField.addEventListener('blur', finishSearch);
searchClearBtn.addEventListener('click', clearSearch);
}());