Roadmap to becoming a developer in 2022
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

46 lines
1.1 KiB

class Topics {
constructor() {
this.topicSearchId = 'search-topic-input';
this.onDOMLoaded = this.onDOMLoaded.bind(this);
this.init = this.init.bind(this);
this.filterTopicNodes = this.filterTopicNodes.bind(this);
}
get topicSearchEl() {
return document.getElementById(this.topicSearchId);
}
filterTopicNodes(e) {
const value = e.target.value.trim().toLowerCase();
if (!value) {
document
.querySelectorAll(`[data-topic]`)
.forEach((item) => item.classList.remove('hidden'));
return;
}
document
.querySelectorAll(`[data-topic]`)
.forEach((item) => item.classList.add('hidden'));
document
.querySelectorAll(`[data-topic*="${value}"]`)
.forEach((item) => item.classList.remove('hidden'));
}
onDOMLoaded() {
if (!this.topicSearchEl) {
return;
}
this.topicSearchEl.addEventListener('keyup', this.filterTopicNodes);
}
init() {
window.addEventListener('DOMContentLoaded', this.onDOMLoaded);
}
}
const topicRef = new Topics();
topicRef.init();