main.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. if (window.NodeList && !NodeList.prototype.forEach) {
  2. NodeList.prototype.forEach = function (callback, thisArg) {
  3. thisArg = thisArg || window;
  4. for (var i = 0; i < this.length; i++) {
  5. callback.call(thisArg, this[i], i, this);
  6. }
  7. };
  8. }
  9. /* Фильтр на мобильный устроствах */
  10. const sidebarToggleBtn = document.querySelector('.menu-icon-wrapper');
  11. const menuIcon = document.querySelector('.menu-icon');
  12. const sidebar = document.querySelector('.sidebar');
  13. // Клик по кнопке для скрытия / показа фильтра и изменения исконки
  14. sidebarToggleBtn.onclick = function () {
  15. menuIcon.classList.toggle('menu-icon-active');
  16. sidebar.classList.toggle('sidebar--mobile-active');
  17. };
  18. /* Показать еще 3 карточки */
  19. const btnShowMoreCards = document.querySelector('.btn-more');
  20. const hiddenCards = document.querySelectorAll('.card-link--hidden');
  21. // Клик по кнопке и показ трех скрытых карточек
  22. btnShowMoreCards.addEventListener('click', function () {
  23. hiddenCards.forEach(function (card) {
  24. card.classList.remove('card-link--hidden');
  25. })
  26. })
  27. /* Показать/скрыть контент внутри виджетов */
  28. const widgets = document.querySelectorAll('.widget');
  29. // Находим все виджеты на странице
  30. widgets.forEach(function (widget) {
  31. // Слушаем клик внутри виджета
  32. widget.addEventListener('click', function (e) {
  33. // Если клик по заголовку - тогда скрываем/показывае тело виджета
  34. if (e.target.classList.contains('widget__title')) {
  35. e.target.classList.toggle('widget__title--active');
  36. e.target.nextElementSibling.classList.toggle('widget__body--hidden');
  37. }
  38. });
  39. });
  40. /* Location - кнопка Любая */
  41. const checkBoxAny = document.querySelector('#location-05');
  42. const topLocationCheckboxes = document.querySelectorAll('[data-location-param]');
  43. // Выбор кнопки Любая и отключение других чекбоксов
  44. checkBoxAny.addEventListener('change', function () {
  45. if (checkBoxAny.checked) {
  46. topLocationCheckboxes.forEach(function (item) {
  47. item.checked = false;
  48. });
  49. }
  50. })
  51. // Отключаем кнопку "Любая", при выборе других параметров
  52. topLocationCheckboxes.forEach(function (item) {
  53. item.addEventListener('change', function () {
  54. if (checkBoxAny.checked) {
  55. checkBoxAny.checked = false;
  56. }
  57. })
  58. })
  59. /* Показать еще 3 доп опции с чекбоксами в фильтре */
  60. const showMoreOptions = document.querySelector('.widget__btn-show-hidden');
  61. const hiddenCheckBoxes = document.querySelectorAll('.checkbox--hidden');
  62. showMoreOptions.onclick = function (e) {
  63. e.preventDefault();
  64. // Если блоки были скрыты - значит показываем
  65. if (showMoreOptions.dataset.options == 'hidden') {
  66. hiddenCheckBoxes.forEach(function (item) {
  67. item.style.display = 'block';
  68. });
  69. showMoreOptions.innerText = 'Скрыть дополнительные опции';
  70. showMoreOptions.dataset.options = 'visible';
  71. }
  72. // Если блоки были видны - значит скрываем
  73. else if (showMoreOptions.dataset.options == 'visible') {
  74. hiddenCheckBoxes.forEach(function (item) {
  75. item.style.display = 'none';
  76. });
  77. showMoreOptions.innerText = 'Показать ещё';
  78. showMoreOptions.dataset.options = 'hidden';
  79. }
  80. }