UNPKG

apex4x

Version:

The Comprehensive ARIA Development Suite

9 lines (8 loc) 1.99 kB
/*@license ARIA Accordion Module 3.1 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 */ "setAccordion"in $A||($A.addWidgetProfile("Accordion",{configure:function(e){return{exposeBounds:!0,exposeHiddenClose:!1,ariaControls:!0,ariaLabelledby:!0,isToggle:!1,allowMultiple:!1,escToClose:!1,returnFocus:!1,click:function(e,t){e.stopPropagation()},onCreate:function(e){$A.setAttr(e.trigger,"aria-expanded","false")},afterRender:function(e,t){e.trackPage&&$A.setPage(e.id)}}},role:function(e){return{role:"region"}},duringRender:function(e,t){$A.setAttr(e.triggerNode,"aria-expanded","true"),e.isToggle||$A.setAttr(e.triggerNode,"aria-disabled","true")},beforeRemove:function(e,t){$A.setAttr(e.triggerNode,"aria-expanded","false"),e.isToggle||$A.setAttr(e.triggerNode,"aria-disabled","false")}}),$A.extend({setAccordion:function(e,r){var t,o,i,a;return this._4X&&(r=e,e=this._X),(e=$A.isPlainObject(e)?(r=e).trigger||r.content||null:e)?(t=null,$A.isArray(e)?t=e:$A.isStr(e)&&(t=(r.context||document).querySelectorAll(e)),o=[],i=[],a=0,$A.loop(t,function(e,t){$A.isNative(t)||-1!==["button","link"].indexOf($A.getAttr(t,"role").toLowerCase()||"false")||$A.setAttr(t,"role","button"),$A.svgFix(t);var n=$A.get($A.getAttr(t,"data-root")),n=$A.toDC(t,$A.extend({widgetType:"Accordion",root:n},r||{}));o.push(n),$A.hasAttr(t,"data-active")&&(i.push(n),a=e)}),$A.map({siblings:o}),$A.updateDisabled(o),r.singleTabStop&&new $A.RovingTabIndex($A.extend({nodes:t,startIndex:a,orientation:2,autoSwitch:r.autoSwitch||"full",autoLoop:!0,onClick:function(e,t,n,r){r.render(),e.preventDefault()},onSpace:function(e,t,n,r){r.render(),e.preventDefault()},onEnter:function(e,t,n,r){r.render(),e.preventDefault()}},r.extendRTI||{})),$A.hasHash(o)||$A.loop(i,function(e,t){t.render()},"array"),1===o.length?o[0]:o):null}}));