computer-scienceangular-roadmapbackend-roadmapblockchain-roadmapdba-roadmapdeveloper-roadmapdevops-roadmapfrontend-roadmapgo-roadmaphactoberfestjava-roadmapjavascript-roadmapnodejs-roadmappython-roadmapqa-roadmapreact-roadmaproadmapstudy-planvue-roadmapweb3-roadmap
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
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();
|
|
|