apex4x
Version:
The Comprehensive ARIA Development Suite
9 lines (8 loc) • 2.58 kB
JavaScript
/*@license
ARIA Tab Module 2.0 for Apex 4X
Author: Bryan Garaventa (https://www.linkedin.com/in/bgaraventa)
Home: WhatSock.com : Download: https://github.com/whatsock/apex
License: MIT (https://opensource.org/licenses/MIT)
Required dependencies: RovingTabIndex.js
*/
"setTab"in $A||($A.addWidgetProfile("Tab",{configure:function(e){return{exposeBounds:!0,isTab:!0,ariaControls:!0,ariaLabelledby:!0,isToggle:!1,allowMultiple:!1,isFocusable:!0,returnFocus:!1,on:"activatetab",click:function(e,t){e.stopPropagation()},afterRender:function(e,t){e.trackPage&&$A.setPage(e.id)}}},role:function(e){return{role:"tabpanel"}},duringRender:function(e,t){$A.setAttr(e.triggerNode,{"aria-expanded":"true","aria-selected":"true"})},afterRender:function(e,t){$A.setAttr(e.triggerNode,{"aria-describedby":e.containerId})},afterRemove:function(e,t){$A.setAttr(e.triggerNode,{"aria-expanded":"false","aria-selected":"false"}),$A.remAttr(e.triggerNode,"aria-describedby")}}),$A.extend({setTab:function(e,a){if(this._4X&&(a=e,e=this._X),!(e=$A.isPlainObject(e)?(a=e).trigger||a.content||null:e))return null;var t=null,i=($A.isArray(e)?t=e:$A.isStr(e)&&(t=(a.context||document).querySelectorAll(e)),a.container&&$A.morph(a.container)||$A.closest(t[0],function(e){if("tablist"===$A.getAttr(e,"role"))return!0}));if(!$A.isNode(i)){for(var n=[],r=[],o=($A.closest(t[0],function(e){if($A.isNode(e)&&n.push(e),e===document.body)return!0}),$A.closest(t[t.length-1],function(e){if($A.isNode(e)&&r.push(e),e===document.body)return!0}),n=n.reverse(),r=r.reverse(),null),s=0;s<n.length;s++)if(n[s]===r[s])o=n[s];else if(n[s]!==r[s])break;i=o}$A.setAttr(i,"role","tablist");var l=[],d=null,u=0,e=($A.loop(t,function(e,t){$A.svgFix(t);var n=[],r=($A.isNode(i)&&$A.closest(t,function(e){if(e===i)return!0;n.push(e)}),i!==document.body&&$A.isNode(i)&&n.length&&$A.setAttr(n,"role","presentation"),t.id||(t.id=$A.genId()),$A.setAttr(t,{role:"tab","aria-expanded":"false","aria-selected":"false"}),$A.get($A.getAttr(t,"data-root"))),r=$A.toDC(t,$A.extend({widgetType:"Tab",root:r,append:!0},a||{}));l.push(r),$A.hasAttr(t,"data-active")&&(d=r,u=e)},"array"),$A.map({siblings:l}),new $A.RovingTabIndex($A.extend({nodes:t,startIndex:u,orientation:1,autoSwitch:a.autoSwitch||"full",autoLoop:!0,onClick:function(e,t,n,r){r.render(),e.preventDefault()},onSpace:function(e,t,n,r){n.onClick.apply(t,arguments),e.preventDefault()},onEnter:function(e,t,n,r){n.onClick.apply(t,arguments),e.preventDefault()}},a.extendRTI||{})));return $A.updateDisabled(e.nodes),!$A.hasHash(l)&&$A.isDC(d)&&d.render(),1===l.length?l[0]:l}}));