Advertisement
mArtti

Untitled

Jun 6th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. (function () {
  2. // SELECTORS
  3. const searchButton = document.querySelector(".search-trigger"),
  4. closeButton = document.querySelector(".search-overlay__close"),
  5. searchOverlay = document.querySelector(".search-overlay"),
  6. searchField = document.querySelector('#search-term'),
  7. resultsDiv = document.querySelector('#search-overlay__results'),
  8. body = document.body;
  9.  
  10. let isOverlayOpen = false,
  11. isSpinnerVisable = false,
  12. typingTimer, previousValue;
  13.  
  14. // ACTIONS
  15. const events = {
  16. keyPressDispatcher (e) {
  17. //too many future conflicts with s = search, poor design practice
  18. if (e.keyCode === 27 && isOverlayOpen) events.closeOverlay();
  19. },
  20.  
  21. openOverlay() {
  22. searchOverlay.classList.add("search-overlay--active");
  23. body.classList.add("body-no-scroll");
  24. isOverlayOpen = true;
  25. },
  26.  
  27. closeOverlay() {
  28. searchOverlay.classList.remove("search-overlay--active");
  29. body.classList.remove("body-no-scroll");
  30. isOverlayOpen = false;
  31. },
  32.  
  33. typingLogic() {
  34. if(searchField.value != previousValue) {
  35. clearTimeout(typingTimer);
  36. if(searchField.value) {
  37. if(!isSpinnerVisable) {
  38. resultsDiv.innerHTML = '<div class="spinner-loader"></div>';
  39. isSpinnerVisable = true;
  40. }
  41. typingTimer = setTimeout(() => events.getResults(), 2000);
  42. } else {
  43. resultsDiv.innerHTML = '';
  44. isSpinnerVisable = false;
  45. }
  46. }
  47. previousValue = searchField.value;
  48. },
  49.  
  50. getResults() {
  51. resultsDiv.innerHTML = 'TEST 6';
  52. isSpinnerVisable = false;
  53. },
  54. }
  55.  
  56. // EVENTS
  57. searchButton.addEventListener('click', events.openOverlay);
  58. closeButton.addEventListener('click', events.closeOverlay);
  59. searchField.addEventListener('keyup', events.typingLogic);
  60. document.addEventListener('keydown', events.keyPressDispatcher);
  61. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement