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.
|
|
|
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();
|