toolshed-8.x-1.x-dev/js/widgets/Accordion.min.js
js/widgets/Accordion.min.js
"use strict";(({theme:l,Toolshed:r})=>{l.accordionToggler=(e="Expand",t="Collapse")=>{var s=new r.Element("button",{class:"toggler"});return s.innerHTML=`
<span class="toggler__collapse-text">${e}</span>
<span class="toggler__expand-text">${t}</span>
`,s};let n=1;r.AccordionItem=class o extends r.Element{constructor(e,t,s,i=null,a={}){super(e,{class:["accordion-item","item--collapsible"]}),this.isExpanded=!0,this.parent=i,this.body=s,this.expander=t,this.useAnimation=a.animate||!0,this.animateTime=a.animateTime||"0.3s",this.children=[],this.body.addClass("item__body"),this.expander.setAttrs({"aria-expanded":this.isExpanded.toString(),"aria-controls":s.id||(s.id="ts-accordion-"+n++)}),this.onToggleExpand=o[i&&a.exclusive?"onClickExclusive":"onClickToggle"].bind(this),t.on("click",this.onToggleExpand)}addChild(e){this.children.push(e)}expand(e=!0){this.addClass("item--expanded"),this.removeClass("item--collapsed"),this.expander.setAttr("aria-expanded","true"),this.isExpanded=!0,this.expander.addClass("toggler--expanded"),this.expander.removeClass("toggler--collapsed"),e&&this.useAnimation?this.body.expand(this.animateTime):(this.body.style.display="",this.body.style.height="")}collapse(e=!0){this.addClass("item--collapsed"),this.removeClass("item--expanded"),this.expander.ariaExpanded="false",this.isExpanded=!1,this.expander.addClass("toggler--collapsed"),this.expander.removeClass("toggler--expanded"),e&&this.useAnimation?this.body.collapse(this.animateTime):this.body.style.display="none",this.children.forEach(e=>{e.isExpanded&&e.collapse(!1)})}static onClickToggle(e){e.preventDefault(),this.isExpanded?this.collapse():this.expand()}static onClickExclusive(e){e.preventDefault(),this.isExpanded?this.collapse():(this.parent.children.forEach(e=>{e!==this&&e.isExpanded&&e.collapse()}),this.expand())}destroy(){this.expander.removeAttrs(["aria-expanded","aria-controls"]),this.expander.removeClass(["toggler--expanded","toggler--collapsed"]),this.removeClass(["accordion-item","item--collapsed","item--expanded","item--collapsible"]),this.body.style.display="",this.body.style.height="",this.expander.destroy(),super.destroy()}};class d extends r.Element{constructor(e,t){super(e,{class:"accordion-item"}),this.el=e,this.parent=t,this.children=[],this.isExpanded=!1}addChild(e){this.isExpanded=!0,this.children.push(e)}expand(){}collapse(){this.children.forEach(e=>{e.isExpanded&&e.collapse(!1)})}}r.Accordion=class extends r.Element{constructor(e,t){super(e,{class:"accordion"}),this.items=new Map,this.children=[],this.configs={exclusive:!0,initOpen:!0,animate:!0,animateTime:"0.3s",...t};const{exclusive:s,initOpen:i,itemSel:a,bodySel:n}=this.configs;let d=this.configs.toggler||l.accordionToggler;r.isString(d)?this.getToggler=e=>new r.Element(e.querySelector(d)||"button"):((d="function"==typeof d?{create:d}:d).attach||(d.attach=(e,t)=>t.insertBefore(e.el,t.querySelector(n))),this.getToggler=e=>{var t=d.create(e);return t&&!t.parentNode&&d.attach(t,e),t}),this.find(a).forEach(e=>this.buildTreeItem(e)),i&&!s||this.children.forEach((e,t)=>{i&&0===t||e.collapse(!1)})}addChild(e){this.children.push(e)}findParent(e,t){let s=e;for(;(s=s.parentElement)&&s!==this.el&&!s.matches(t););return s}buildTreeItem(e){var t=this.items.get(e);if(t)return t;var{itemSel:t,bodySel:s}=this.configs,t=this.findParent(e,t);if(!t)throw new Error("Unable to find a parent buildTreeItem().");t=t===this.el?this:this.items.get(t)||this.buildTreeItem(t);if(!t)throw new Error("No valid accordion parent available, or not a descendent of the accordion.");let i;var a,s=e.querySelector(s);return i=(i=s&&(a=this.getToggler(e))?new r.AccordionItem(e,a,new r.Element(s),t,this.configs):i)||new d(item,t),this.items.set(e,i),t.addChild(i),i}destroy(){this.removeClass("accordion"),this.items.forEach(e=>e.destroy()),delete this.items,delete this.children,delete this.configs,super.destroy()}}})(Drupal);