選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

137 行
3.9KB

  1. $(document).ready(function () {
  2. scrollMenu();
  3. menuToggle();
  4. closeMenu();
  5. manageFormContact();
  6. manageFormSearch();
  7. manageFormIndiv();
  8. initialisePopovers();
  9. });
  10. function initialisePopovers() {
  11. $('[data-toggle="popover"]').popover({
  12. html: true,
  13. container: '.map',
  14. placement: 'top',
  15. });
  16. }
  17. function manageFormIndiv() {
  18. document
  19. .querySelectorAll('.add_item_link')
  20. .forEach(btn => btn.addEventListener("click", addFormToCollection));
  21. }
  22. const addFormToCollection = (e) => {
  23. const collectionHolder = document.querySelector('.' + e.currentTarget.dataset.collectionHolderClass);
  24. const item = document.createElement('li');
  25. item.innerHTML = collectionHolder
  26. .dataset
  27. .prototype
  28. .replace(
  29. /__name__/g,
  30. collectionHolder.dataset.index
  31. );
  32. collectionHolder.appendChild(item);
  33. collectionHolder.dataset.index++;
  34. if (collectionHolder.dataset.index >= 6) {
  35. e.currentTarget.style.visibility = 'hidden';
  36. }
  37. // add a delete link to the new form
  38. addFormDeleteLink(item, e.currentTarget);
  39. };
  40. const addFormDeleteLink = (formLi, currentTarget) => {
  41. const collectionHolder = document.querySelector('.' + currentTarget.dataset.collectionHolderClass);
  42. const removeFormButton = document.createElement('button')
  43. removeFormButton.classList.add('button-green', 'button-remove')
  44. removeFormButton.innerText = 'Supprimer'
  45. formLi.append(removeFormButton);
  46. removeFormButton.addEventListener('click', (e) => {
  47. collectionHolder.dataset.index--;
  48. if (collectionHolder.dataset.index <= 6) {
  49. currentTarget.style.visibility = 'visible';
  50. }
  51. e.preventDefault()
  52. formLi.remove();
  53. });
  54. }
  55. function menuToggle() {
  56. var box = $('.menu-content');
  57. var button = $('.toggle');
  58. button.on('click', function () {
  59. box.toggle('slow');
  60. });
  61. }
  62. function closeMenu() {
  63. var box = $('.menu-content');
  64. $('.row-menu a').on('click', function () {
  65. box.toggle('slow');
  66. })
  67. }
  68. function scrollMenu() {
  69. $('a[href*="#"]:not([href="#"])').click(function () {
  70. var target = $(this.hash);
  71. $('html,body').stop().animate({
  72. scrollTop: target.offset().top - 122
  73. }, 'linear');
  74. });
  75. if (location.hash) {
  76. var id = $(location.hash);
  77. $('html,body').animate({scrollTop: id.offset().top - 122}, 'linear')
  78. }
  79. }
  80. function manageFormSearch() {
  81. $(".dropdown-search").on("change", "input[type='checkbox']", function () {
  82. $(this).closest("li").toggleClass("active", this.checked);
  83. });
  84. $(document).on('click', '.allow-focus', function (e) {
  85. e.stopPropagation();
  86. });
  87. $('.pagination a').click(function (e) {
  88. console.log(this.href.split('page=')[1]);
  89. $('.hidden-page').val(this.href.split('page=')[1]);
  90. $('.search-button').click();
  91. return false;
  92. });
  93. }
  94. function manageFormContact() {
  95. $('#contact_lccap').val('blop');
  96. $('#contact-form-btn').on('click', function () {
  97. if (checkFormValidity('#contact-form')) {
  98. $('#contact-form').fadeOut(200);
  99. $form = $('#contact-form');
  100. $.ajax({
  101. url: $form.prop('action'),
  102. method: $form.prop('method'),
  103. data: $form.serialize(),
  104. dataType: "json",
  105. success: function (response) {
  106. $('#contact-form').html('<p class="success-post">Merci pour votre message, nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais.</p>');
  107. $('#contact-form').fadeIn(500);
  108. }
  109. });
  110. }
  111. });
  112. }
  113. function checkFormValidity(formId) {
  114. if (!document.getElementById(formId.substr(1)).checkValidity()) {
  115. document.getElementById(formId.substr(1)).reportValidity()
  116. return false;
  117. } else {
  118. return true;
  119. }
  120. }