tabs.html 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. {{ $id := substr (md5 .Inner) 0 16 }}
  2. <div id="{{ $id }}" class="tab">
  3. <div class="tab__links">
  4. {{ range .Params }}
  5. <button class="tab__link" aria-label="Tab link">{{ . }}</button>
  6. {{ end }}
  7. </div>
  8. {{ .Inner }}
  9. </div>
  10. <script>
  11. 'use strict';
  12. var containerId = JSON.parse({{ $id | jsonify }});
  13. var containerElem = document.getElementById(containerId);
  14. var tabLinks = null;
  15. var tabContents = null;
  16. var ids = [];
  17. if (containerElem) {
  18. tabLinks = containerElem.querySelectorAll('.tab__link');
  19. tabContents = containerElem.querySelectorAll('.tab__content');
  20. }
  21. for (var i = 0; i < tabContents.length; i++) {
  22. ids = ids.concat(tabContents[i].getAttribute('id'));
  23. tabContents[i].style.display = 'none';
  24. if (0 === parseInt(i, 10) && !tabContents[i].classList.contains('active')) {
  25. tabContents[i].classList.add('active');
  26. }
  27. }
  28. for (var i = 0; i < tabLinks.length; i++) {
  29. tabLinks[i].setAttribute('id', ids[i]);
  30. if (0 === parseInt(i, 10) && !tabLinks[i].classList.contains('active')) {
  31. tabLinks[i].classList.add('active');
  32. } else {
  33. tabLinks[i].classList.remove('active');
  34. }
  35. }
  36. if (tabContents.length > 0) {
  37. tabContents[0].style.display = 'block';
  38. }
  39. </script>