main.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // polyfills
  2. import 'babel-polyfill';
  3. import domready from 'domready';
  4. import search from './search';
  5. const GravTNTSearch = () => {
  6. /* const uri = new URI(global.location.href, true);
  7. history.replace({
  8. search: global.location.search,
  9. hash: global.location.hash,
  10. state: {
  11. historyValue: uri.query.q || '',
  12. type: 'tntsearch',
  13. },
  14. });*/
  15. const searchForms = document.querySelectorAll('form.tntsearch-form');
  16. [...searchForms].forEach((form) => {
  17. const input = form.querySelector('.tntsearch-field');
  18. const clear = form.querySelector('.tntsearch-clear');
  19. const results = form.querySelector('.tntsearch-results');
  20. if (!input || !results) { return false; }
  21. form.addEventListener('submit', (event) => event.preventDefault());
  22. input.addEventListener('focus', () => search(input, results));
  23. input.addEventListener('input', () => {
  24. if (clear) {
  25. clear.style.display = '';
  26. }
  27. search.cancel();
  28. search({ input, results });
  29. });
  30. if (clear) {
  31. clear.addEventListener('click', () => {
  32. if (clear) {
  33. clear.style.display = 'none';
  34. }
  35. input.value = '';
  36. search.cancel();
  37. search({ input, results });
  38. });
  39. }
  40. return this;
  41. });
  42. document.addEventListener('click', (event) => {
  43. [...searchForms].forEach((form) => {
  44. if (!form.querySelector('.tntsearch-dropdown')) { return; }
  45. if (!form.contains(event.target)) {
  46. form.querySelector('.tntsearch-results').style.display = 'none';
  47. }
  48. });
  49. });
  50. };
  51. domready(GravTNTSearch);
  52. window.GravTNTSearch = GravTNTSearch;