aria-ease 7.0.0 → 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{audit-APAPHXRO.js → audit-WBKVW7H6.js} +2 -2
- package/dist/cli.cjs +8 -8
- package/dist/cli.js +2 -2
- package/dist/index.cjs +18 -18
- package/dist/index.js +15 -15
- package/dist/src/accordion/index.cjs +1 -1
- package/dist/src/accordion/index.js +1 -1
- package/dist/src/block/index.cjs +1 -1
- package/dist/src/block/index.js +1 -1
- package/dist/src/checkbox/index.cjs +1 -1
- package/dist/src/checkbox/index.js +1 -1
- package/dist/src/combobox/index.cjs +1 -1
- package/dist/src/combobox/index.js +1 -1
- package/dist/src/menu/index.cjs +1 -1
- package/dist/src/menu/index.js +1 -1
- package/dist/src/radio/index.cjs +1 -1
- package/dist/src/radio/index.js +1 -1
- package/dist/src/tabs/index.cjs +1 -1
- package/dist/src/tabs/index.js +1 -1
- package/dist/src/toggle/index.cjs +1 -1
- package/dist/src/toggle/index.js +1 -1
- package/package.json +2 -2
package/dist/src/tabs/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';function D({tabListId:
|
|
1
|
+
'use strict';function D({tabListId:b,tabsClass:m,tabPanelsClass:h,orientation:E="horizontal",activateOnFocus:M=true,callback:i}){if(b==="")return console.error("[aria-ease] 'tabListId' should not be an empty string. Provide an id to the tab list container element that exists before calling makeTabsAccessible."),{cleanup:()=>{}};let l=document.querySelector(`#${b}`);if(!l)return console.error(`[aria-ease] Element with id="${b}" not found. Make sure the tab list container exists before calling makeTabsAccessible.`),{cleanup:()=>{}};if(m==="")return console.error("[aria-ease] 'tabsClass' should not be an empty string. Provide a class name that exists on the tab button elements before calling makeTabsAccessible."),{cleanup:()=>{}};let a=Array.from(l.querySelectorAll(`.${m}`));if(a.length===0)return console.error(`[aria-ease] No elements with class="${m}" found. Make sure tab buttons exist before calling makeTabsAccessible.`),{cleanup:()=>{}};if(h==="")return console.error("[aria-ease] 'tabPanelsClass' should not be an empty string. Provide a class name that exists on the tab panel elements before calling makeTabsAccessible."),{cleanup:()=>{}};let s=Array.from(document.querySelectorAll(`.${h}`));if(s.length===0)return console.error(`[aria-ease] No elements with class="${h}" found. Make sure tab panels exist before calling makeTabsAccessible.`),{cleanup:()=>{}};if(a.length!==s.length)return console.error(`[aria-ease] Tab/panel mismatch: found ${a.length} tabs but ${s.length} panels.`),{cleanup:()=>{}};let p=new WeakMap,v=new WeakMap,k=new WeakMap,f=0;function g(){l.setAttribute("role","tablist"),l.setAttribute("aria-orientation",E),a.forEach((e,t)=>{let n=s[t];e.id||(e.id=`${b}-tab-${t}`),n.id||(n.id=`${b}-panel-${t}`),e.setAttribute("role","tab"),e.setAttribute("aria-controls",n.id),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1"),n.setAttribute("role","tabpanel"),n.setAttribute("aria-labelledby",e.id),n.hidden=true,n.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')||n.setAttribute("tabindex","0");}),d(0,false);}function d(e,t=true){if(e<0||e>=a.length){console.error(`[aria-ease] Invalid tab index: ${e}`);return}let n=f;a.forEach((c,A)=>{let C=s[A];c.setAttribute("aria-selected","false"),c.setAttribute("tabindex","-1"),C.hidden=true;});let r=a[e],o=s[e];if(r.setAttribute("aria-selected","true"),r.setAttribute("tabindex","0"),o.hidden=false,t&&r.focus(),f=e,i?.onTabChange&&n!==e)try{i.onTabChange(e,n);}catch(c){console.error("[aria-ease] Error in tabs onTabChange callback:",c);}}function u(e){let t=a.findIndex(o=>o===document.activeElement),n=t!==-1?t:f,r=n;switch(e){case "first":r=0;break;case "last":r=a.length-1;break;case "next":r=(n+1)%a.length;break;case "prev":r=(n-1+a.length)%a.length;break}if(a[r].focus(),a[r].setAttribute("tabindex","0"),a[f].setAttribute("tabindex","-1"),M)d(r,false);else {let o=f;a.forEach((c,A)=>{A===r?c.setAttribute("tabindex","0"):A!==o&&c.setAttribute("tabindex","-1");});}}function y(e){return ()=>{d(e);}}function w(e){return t=>{let{key:n}=t,r=false;if(E==="horizontal")switch(n){case "ArrowLeft":t.preventDefault(),u("prev"),r=true;break;case "ArrowRight":t.preventDefault(),u("next"),r=true;break}else switch(n){case "ArrowUp":t.preventDefault(),u("prev"),r=true;break;case "ArrowDown":t.preventDefault(),u("next"),r=true;break}if(!r)switch(n){case "Home":t.preventDefault(),u("first");break;case "End":t.preventDefault(),u("last");break;case " ":case "Enter":M||(t.preventDefault(),d(e));break;case "F10":if(t.shiftKey&&i?.onContextMenu){t.preventDefault();try{i.onContextMenu(e,a[e]);}catch(o){console.error("[aria-ease] Error in tabs onContextMenu callback:",o);}}break}}}function H(e){return t=>{if(i?.onContextMenu){t.preventDefault();try{i.onContextMenu(e,a[e]);}catch(n){console.error("[aria-ease] Error in tabs onContextMenu callback:",n);}}}}function x(){a.forEach((e,t)=>{let n=y(t),r=w(t),o=H(t);e.addEventListener("click",n),e.addEventListener("keydown",r),i?.onContextMenu&&(e.addEventListener("contextmenu",o),k.set(e,o)),p.set(e,r),v.set(e,n);});}function T(){a.forEach(e=>{let t=p.get(e),n=v.get(e),r=k.get(e);t&&(e.removeEventListener("keydown",t),p.delete(e)),n&&(e.removeEventListener("click",n),v.delete(e)),r&&(e.removeEventListener("contextmenu",r),k.delete(e));});}function L(){T(),a.forEach((e,t)=>{let n=s[t];e.removeAttribute("role"),e.removeAttribute("aria-selected"),e.removeAttribute("aria-controls"),e.removeAttribute("tabindex"),n.removeAttribute("role"),n.removeAttribute("aria-labelledby"),n.removeAttribute("tabindex"),n.hidden=false;}),l.removeAttribute("role"),l.removeAttribute("aria-orientation");}function $(){T();let e=Array.from(l.querySelectorAll(`.${m}`)),t=Array.from(document.querySelectorAll(`.${h}`));a.length=0,a.push(...e),s.length=0,s.push(...t),g(),x();}return g(),x(),{activateTab:d,cleanup:L,refresh:$}}exports.makeTabsAccessible=D;
|
package/dist/src/tabs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function D({tabListId:
|
|
1
|
+
function D({tabListId:b,tabsClass:m,tabPanelsClass:h,orientation:E="horizontal",activateOnFocus:M=true,callback:i}){if(b==="")return console.error("[aria-ease] 'tabListId' should not be an empty string. Provide an id to the tab list container element that exists before calling makeTabsAccessible."),{cleanup:()=>{}};let l=document.querySelector(`#${b}`);if(!l)return console.error(`[aria-ease] Element with id="${b}" not found. Make sure the tab list container exists before calling makeTabsAccessible.`),{cleanup:()=>{}};if(m==="")return console.error("[aria-ease] 'tabsClass' should not be an empty string. Provide a class name that exists on the tab button elements before calling makeTabsAccessible."),{cleanup:()=>{}};let a=Array.from(l.querySelectorAll(`.${m}`));if(a.length===0)return console.error(`[aria-ease] No elements with class="${m}" found. Make sure tab buttons exist before calling makeTabsAccessible.`),{cleanup:()=>{}};if(h==="")return console.error("[aria-ease] 'tabPanelsClass' should not be an empty string. Provide a class name that exists on the tab panel elements before calling makeTabsAccessible."),{cleanup:()=>{}};let s=Array.from(document.querySelectorAll(`.${h}`));if(s.length===0)return console.error(`[aria-ease] No elements with class="${h}" found. Make sure tab panels exist before calling makeTabsAccessible.`),{cleanup:()=>{}};if(a.length!==s.length)return console.error(`[aria-ease] Tab/panel mismatch: found ${a.length} tabs but ${s.length} panels.`),{cleanup:()=>{}};let p=new WeakMap,v=new WeakMap,k=new WeakMap,f=0;function g(){l.setAttribute("role","tablist"),l.setAttribute("aria-orientation",E),a.forEach((e,t)=>{let n=s[t];e.id||(e.id=`${b}-tab-${t}`),n.id||(n.id=`${b}-panel-${t}`),e.setAttribute("role","tab"),e.setAttribute("aria-controls",n.id),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1"),n.setAttribute("role","tabpanel"),n.setAttribute("aria-labelledby",e.id),n.hidden=true,n.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')||n.setAttribute("tabindex","0");}),d(0,false);}function d(e,t=true){if(e<0||e>=a.length){console.error(`[aria-ease] Invalid tab index: ${e}`);return}let n=f;a.forEach((c,A)=>{let C=s[A];c.setAttribute("aria-selected","false"),c.setAttribute("tabindex","-1"),C.hidden=true;});let r=a[e],o=s[e];if(r.setAttribute("aria-selected","true"),r.setAttribute("tabindex","0"),o.hidden=false,t&&r.focus(),f=e,i?.onTabChange&&n!==e)try{i.onTabChange(e,n);}catch(c){console.error("[aria-ease] Error in tabs onTabChange callback:",c);}}function u(e){let t=a.findIndex(o=>o===document.activeElement),n=t!==-1?t:f,r=n;switch(e){case "first":r=0;break;case "last":r=a.length-1;break;case "next":r=(n+1)%a.length;break;case "prev":r=(n-1+a.length)%a.length;break}if(a[r].focus(),a[r].setAttribute("tabindex","0"),a[f].setAttribute("tabindex","-1"),M)d(r,false);else {let o=f;a.forEach((c,A)=>{A===r?c.setAttribute("tabindex","0"):A!==o&&c.setAttribute("tabindex","-1");});}}function y(e){return ()=>{d(e);}}function w(e){return t=>{let{key:n}=t,r=false;if(E==="horizontal")switch(n){case "ArrowLeft":t.preventDefault(),u("prev"),r=true;break;case "ArrowRight":t.preventDefault(),u("next"),r=true;break}else switch(n){case "ArrowUp":t.preventDefault(),u("prev"),r=true;break;case "ArrowDown":t.preventDefault(),u("next"),r=true;break}if(!r)switch(n){case "Home":t.preventDefault(),u("first");break;case "End":t.preventDefault(),u("last");break;case " ":case "Enter":M||(t.preventDefault(),d(e));break;case "F10":if(t.shiftKey&&i?.onContextMenu){t.preventDefault();try{i.onContextMenu(e,a[e]);}catch(o){console.error("[aria-ease] Error in tabs onContextMenu callback:",o);}}break}}}function H(e){return t=>{if(i?.onContextMenu){t.preventDefault();try{i.onContextMenu(e,a[e]);}catch(n){console.error("[aria-ease] Error in tabs onContextMenu callback:",n);}}}}function x(){a.forEach((e,t)=>{let n=y(t),r=w(t),o=H(t);e.addEventListener("click",n),e.addEventListener("keydown",r),i?.onContextMenu&&(e.addEventListener("contextmenu",o),k.set(e,o)),p.set(e,r),v.set(e,n);});}function T(){a.forEach(e=>{let t=p.get(e),n=v.get(e),r=k.get(e);t&&(e.removeEventListener("keydown",t),p.delete(e)),n&&(e.removeEventListener("click",n),v.delete(e)),r&&(e.removeEventListener("contextmenu",r),k.delete(e));});}function L(){T(),a.forEach((e,t)=>{let n=s[t];e.removeAttribute("role"),e.removeAttribute("aria-selected"),e.removeAttribute("aria-controls"),e.removeAttribute("tabindex"),n.removeAttribute("role"),n.removeAttribute("aria-labelledby"),n.removeAttribute("tabindex"),n.hidden=false;}),l.removeAttribute("role"),l.removeAttribute("aria-orientation");}function $(){T();let e=Array.from(l.querySelectorAll(`.${m}`)),t=Array.from(document.querySelectorAll(`.${h}`));a.length=0,a.push(...e),s.length=0,s.push(...t),g(),x();}return g(),x(),{activateTab:d,cleanup:L,refresh:$}}export{D as makeTabsAccessible};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';function T({toggleId:
|
|
1
|
+
'use strict';function T({toggleId:s,togglesClass:i,isSingleToggle:d=true}){if(s==="")return console.error("[aria-ease] 'toggleId' should not be an empty string. Provide an id to the toggle element or toggle container before calling makeToggleAccessible."),{cleanup:()=>{}};let a=document.querySelector(`#${s}`);if(!a)return console.error(`[aria-ease] Element with id="${s}" not found. Make sure the toggle element exists before calling makeToggleAccessible.`),{cleanup:()=>{}};let r;if(d)r=[a];else {if(!i)return console.error("[aria-ease] togglesClass is required when isSingleToggle is false."),{cleanup:()=>{}};if(r=Array.from(a.querySelectorAll(`.${i}`)),r.length===0)return console.error(`[aria-ease] No elements with class="${i}" found. Make sure toggle buttons exist before calling makeToggleAccessible.`),{cleanup:()=>{}}}let o=new WeakMap,l=new WeakMap;function f(){r.forEach(e=>{e.tagName.toLowerCase()!=="button"&&!e.getAttribute("role")&&e.setAttribute("role","button"),e.hasAttribute("aria-pressed")||e.setAttribute("aria-pressed","false"),e.hasAttribute("tabindex")||e.setAttribute("tabindex","0");});}function c(e){if(e<0||e>=r.length){console.error(`[aria-ease] Invalid toggle index: ${e}`);return}let t=r[e],n=t.getAttribute("aria-pressed")==="true";t.setAttribute("aria-pressed",n?"false":"true");}function b(e,t){if(e<0||e>=r.length){console.error(`[aria-ease] Invalid toggle index: ${e}`);return}r[e].setAttribute("aria-pressed",t?"true":"false");}function g(e){return ()=>{c(e);}}function m(e){return t=>{let{key:n}=t;switch(n){case "Enter":case " ":t.preventDefault(),c(e);break}}}function p(){r.forEach((e,t)=>{let n=g(t),u=m(t);e.addEventListener("click",n),e.addEventListener("keydown",u),o.set(e,u),l.set(e,n);});}function k(){r.forEach(e=>{let t=o.get(e),n=l.get(e);t&&(e.removeEventListener("keydown",t),o.delete(e)),n&&(e.removeEventListener("click",n),l.delete(e));});}function A(){k();}function h(){return r.map(e=>e.getAttribute("aria-pressed")==="true")}function E(){return r.map((e,t)=>e.getAttribute("aria-pressed")==="true"?t:-1).filter(e=>e!==-1)}return f(),p(),{toggleButton:c,setPressed:b,getPressedStates:h,getPressedIndices:E,cleanup:A}}exports.makeToggleAccessible=T;
|
package/dist/src/toggle/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function T({toggleId:
|
|
1
|
+
function T({toggleId:s,togglesClass:i,isSingleToggle:d=true}){if(s==="")return console.error("[aria-ease] 'toggleId' should not be an empty string. Provide an id to the toggle element or toggle container before calling makeToggleAccessible."),{cleanup:()=>{}};let a=document.querySelector(`#${s}`);if(!a)return console.error(`[aria-ease] Element with id="${s}" not found. Make sure the toggle element exists before calling makeToggleAccessible.`),{cleanup:()=>{}};let r;if(d)r=[a];else {if(!i)return console.error("[aria-ease] togglesClass is required when isSingleToggle is false."),{cleanup:()=>{}};if(r=Array.from(a.querySelectorAll(`.${i}`)),r.length===0)return console.error(`[aria-ease] No elements with class="${i}" found. Make sure toggle buttons exist before calling makeToggleAccessible.`),{cleanup:()=>{}}}let o=new WeakMap,l=new WeakMap;function f(){r.forEach(e=>{e.tagName.toLowerCase()!=="button"&&!e.getAttribute("role")&&e.setAttribute("role","button"),e.hasAttribute("aria-pressed")||e.setAttribute("aria-pressed","false"),e.hasAttribute("tabindex")||e.setAttribute("tabindex","0");});}function c(e){if(e<0||e>=r.length){console.error(`[aria-ease] Invalid toggle index: ${e}`);return}let t=r[e],n=t.getAttribute("aria-pressed")==="true";t.setAttribute("aria-pressed",n?"false":"true");}function b(e,t){if(e<0||e>=r.length){console.error(`[aria-ease] Invalid toggle index: ${e}`);return}r[e].setAttribute("aria-pressed",t?"true":"false");}function g(e){return ()=>{c(e);}}function m(e){return t=>{let{key:n}=t;switch(n){case "Enter":case " ":t.preventDefault(),c(e);break}}}function p(){r.forEach((e,t)=>{let n=g(t),u=m(t);e.addEventListener("click",n),e.addEventListener("keydown",u),o.set(e,u),l.set(e,n);});}function k(){r.forEach(e=>{let t=o.get(e),n=l.get(e);t&&(e.removeEventListener("keydown",t),o.delete(e)),n&&(e.removeEventListener("click",n),l.delete(e));});}function A(){k();}function h(){return r.map(e=>e.getAttribute("aria-pressed")==="true")}function E(){return r.map((e,t)=>e.getAttribute("aria-pressed")==="true"?t:-1).filter(e=>e!==-1)}return f(),p(),{toggleButton:c,setPressed:b,getPressedStates:h,getPressedIndices:E,cleanup:A}}export{T as makeToggleAccessible};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aria-ease",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.1",
|
|
4
4
|
"description": "Accessibility infrastructure for the entire frontend engineering lifecycle. Build accessible patterns, run automated audits, verify component interactions, and gate deployments — all in one system.",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"type": "module",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"test": "vitest run --reporter verbose -- --config ./vitest.config.mts",
|
|
12
12
|
"bench": "node --loader ts-node/esm benchmarks/sample.bench.ts",
|
|
13
13
|
"lint": "eslint src --ext .ts",
|
|
14
|
-
"prepublishOnly": "tsc && npm run lint && npm run test && npm run build",
|
|
14
|
+
"prepublishOnly": "tsc && npm run lint && npm run test && npm run build && npm login",
|
|
15
15
|
"release": "standard-version",
|
|
16
16
|
"release:patch": "standard-version --release-as patch",
|
|
17
17
|
"release:minor": "standard-version --release-as minor",
|