feedback.html 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. {{ if (and (not .Params.hide_feedback) (.Site.Params.ui.feedback.enable)) -}}
  2. {{ with .Site.Params.ui.feedback -}}
  3. <style>
  4. .feedback--answer {
  5. display: inline-block;
  6. }
  7. .feedback--answer-no {
  8. margin-left: 1em;
  9. }
  10. .feedback--response {
  11. display: none;
  12. margin-top: 1em;
  13. }
  14. .feedback--response__visible {
  15. display: block;
  16. }
  17. </style>
  18. <div class="d-print-none">
  19. <h2 class="feedback--title">{{- i18n "feedback_title" -}}</h2>
  20. <p class="feedback--question">{{- i18n "feedback_question" -}}</p>
  21. <button class="btn btn-primary mb-4 feedback--answer feedback--answer-yes">{{- i18n "feedback_positive" -}}</button>
  22. <button class="btn btn-primary mb-4 feedback--answer feedback--answer-no">{{- i18n "feedback_negative" -}}</button>
  23. <p class="feedback--response feedback--response-yes">
  24. {{ .yes | safeHTML }}
  25. </p>
  26. <p class="feedback--response feedback--response-no">
  27. {{ .no | safeHTML }}
  28. </p>
  29. </div>
  30. <script>
  31. const yesButton = document.querySelector('.feedback--answer-yes');
  32. const noButton = document.querySelector('.feedback--answer-no');
  33. const yesResponse = document.querySelector('.feedback--response-yes');
  34. const noResponse = document.querySelector('.feedback--response-no');
  35. const disableButtons = () => {
  36. yesButton.disabled = true;
  37. noButton.disabled = true;
  38. };
  39. const sendFeedback = (value) => {
  40. if (typeof gtag !== 'function') return;
  41. gtag('event', 'page_helpful', {
  42. 'event_category': 'Helpful',
  43. 'event_label': window.location.pathname,
  44. 'value': value
  45. });
  46. };
  47. yesButton.addEventListener('click', () => {
  48. yesResponse.classList.add('feedback--response__visible');
  49. disableButtons();
  50. {{ $maxValue := .max_value | default 100 -}}
  51. sendFeedback({{ $maxValue }});
  52. });
  53. noButton.addEventListener('click', () => {
  54. noResponse.classList.add('feedback--response__visible');
  55. disableButtons();
  56. sendFeedback(0);
  57. });
  58. </script>
  59. {{ end -}}
  60. <br />
  61. {{ end -}}