-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSearchForm.js
43 lines (42 loc) · 1.33 KB
/
SearchForm.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class SearchForm{
constructor(){
this.render();
}
render(){
const searchButton = document.getElementById('button');
const searchInput = document.getElementById('search');
searchInput.addEventListener('input', (event) => {
this.inputValue = event.target.value;
if(this.inputValue){
searchButton.disabled = false;
} else{
searchButton.disabled = true;
}
});
let debounce;
searchInput.addEventListener('keyup',()=>{
if(debounce){
clearTimeout(debounce);
}
debounce = setTimeout(() => {
this.executeSearch();
}, 500);
});
searchButton.addEventListener('click', (event) => {
this.executeSearch();
});
}
executeSearch(){
const loader = document.getElementById('loader');
const resultList = document.getElementById('result-list');
resultList.classList.add('d-none');
loader.classList.remove('d-none');
tenCompanies(this.inputValue).then((data)=>{
this.onSearchCallback(data, this.inputValue);
loader.classList.add('d-none');
});
}
onSearch(callback){
this.onSearchCallback = callback;
}
}