UNPKG

basecoat-css

Version:

Tailwind CSS for Basecoat components

1 lines 1.08 kB
(()=>{const t=t=>{const e=t.querySelector('[role="tablist"]');if(!e)return;const a=Array.from(e.querySelectorAll('[role="tab"]')),r=a.map((t=>document.getElementById(t.getAttribute("aria-controls")))).filter(Boolean),n=t=>{a.forEach(((t,e)=>{t.setAttribute("aria-selected","false"),t.setAttribute("tabindex","-1"),r[e]&&(r[e].hidden=!0)})),t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0");const e=document.getElementById(t.getAttribute("aria-controls"));e&&(e.hidden=!1)};e.addEventListener("click",(t=>{const e=t.target.closest('[role="tab"]');e&&n(e)})),e.addEventListener("keydown",(t=>{const e=t.target;if(!a.includes(e))return;let r;const i=a.indexOf(e);switch(t.key){case"ArrowRight":r=a[(i+1)%a.length];break;case"ArrowLeft":r=a[(i-1+a.length)%a.length];break;case"Home":r=a[0];break;case"End":r=a[a.length-1];break;default:return}t.preventDefault(),n(r),r.focus()})),t.dataset.tabsInitialized=!0,t.dispatchEvent(new CustomEvent("basecoat:initialized"))};window.basecoat&&window.basecoat.register("tabs",".tabs:not([data-tabs-initialized])",t)})();