mirror of
https://github.com/LukeHagar/unicorn-utterances.git
synced 2025-12-09 21:07:49 +00:00
1 line
1.8 KiB
JavaScript
1 line
1.8 KiB
JavaScript
const LOCAL_STORAGE_KEY="tabs-selection";window.addEventListener("DOMContentLoaded",()=>{let e=document.querySelectorAll('[role="tablist"]');e.forEach(e=>{let t=e.querySelectorAll('[role="tab"]');t.forEach(e=>{e.addEventListener("click",e=>{let t=e.target;setTimeout(()=>{t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})},0),a({target:t})})});let r=0;e.addEventListener("keydown",e=>{let a=e;(39===a.keyCode||37===a.keyCode)&&(t[r].setAttribute("tabindex","-1"),39===a.keyCode?++r>=t.length&&(r=0):37===a.keyCode&&--r<0&&(r=t.length-1),t[r].setAttribute("tabindex","0"),t[r].focus(),t[r].click())})});let t=localStorage.getItem(LOCAL_STORAGE_KEY);if(t){let r=document.querySelector(`[data-tabname="${t}"]`);r&&a({target:r})}function a(e){let t=e.target,r=t.parentNode,l=r.parentNode;r.querySelectorAll('[aria-selected="true"]').forEach(e=>e.setAttribute("aria-selected","false")),t.setAttribute("aria-selected","true");let n=t.dataset.tabname,o=document.querySelectorAll(`[role="tab"][data-tabname="${t.dataset.tabname}"]`);for(let i of(localStorage.setItem(LOCAL_STORAGE_KEY,n),o))i!==t&&a({target:i});l.querySelectorAll('[role="tabpanel"]').forEach(e=>e.setAttribute("hidden","true")),l.parentNode.querySelector(`#${t.getAttribute("aria-controls")}`).removeAttribute("hidden")}function l(e,t){return!!e.parentElement&&(!!t(e.parentElement)||l(e.parentElement,t))}(()=>{let e=window.location.hash;if(!e)return;let t=document.querySelector<HTMLElement>e;if(!t)return;let r=l(t,e=>e.hasAttribute("hidden")&&"false"!==e.getAttribute("hidden"));if(!r)return;let a=e.slice(1);try{let n=document.querySelector<HTMLElement>`[data-headers*="${a}"`;if(!n)return;let o=n.getAttribute("data-tabname");if(!o)return;n.click(),setTimeout(()=>{let t=document.querySelector(e);t&&t.scrollIntoView(!0)},0)}catch(i){console.error("Error finding matching tab",i)}})()}); |