extra.js 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. // Link tabs, as per https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/#linked-tabs
  2. const savedTab = localStorage.getItem('savedTab')
  3. const tabs = document.querySelectorAll(".tabbed-set > input")
  4. for (const tab of tabs) {
  5. tab.addEventListener("click", () => {
  6. const current = document.querySelector(`label[for=${tab.id}]`)
  7. const pos = current.getBoundingClientRect().top
  8. const labelContent = current.innerHTML
  9. const labels = document.querySelectorAll('.tabbed-set > label, .tabbed-alternate > .tabbed-labels > label')
  10. for (const label of labels) {
  11. if (label.innerHTML === labelContent) {
  12. document.querySelector(`input[id=${label.getAttribute('for')}]`).checked = true
  13. }
  14. }
  15. // Preserve scroll position
  16. const delta = (current.getBoundingClientRect().top) - pos
  17. window.scrollBy(0, delta)
  18. // Save
  19. localStorage.setItem('savedTab', labelContent)
  20. })
  21. // Select saved tab
  22. const current = document.querySelector(`label[for=${tab.id}]`)
  23. const labelContent = current.innerHTML
  24. if (savedTab === labelContent) {
  25. tab.checked = true
  26. }
  27. }