-
Notifications
You must be signed in to change notification settings - Fork 0
/
jsa.min.js
1 lines (1 loc) · 2.15 KB
/
jsa.min.js
1
let t=window.jsa||{};t=(()=>{function t(){const t=this;t.settings={dt:"dt a",dd:"dd",openFirst:!1,openAll:!1},t.el=null}return t})(),t.prototype.setOpts=function(t){let e=this;if("object"==typeof t)for(let s in t)t.hasOwnProperty(s)&&(e.settings[s]=t[s])},t.prototype.setParentEL=function(t){let e=this;e.el=t||".jsa"},t.prototype.getID=function(t){let e=this,s=e.el.replace(".","");return s},t.prototype.getObjs=function(t){return Object.keys(t).map((function(e){return t[e]}))},t.prototype.reset=function(){let t=this;t.terms.map((function(t){t.classList.remove("active")})),t.definitions.map((function(t){t.classList.add("collapsed"),t.classList.remove("show")}))},t.prototype.collapse=function(t){t.classList.add("active");let e=t.dataset.target,s=document.getElementById(e);s.classList.remove("collapsed"),s.classList.add("show")},t.prototype.logic=function(t){let e=t.target;if("DT"===e.parentNode.nodeName){t.preventDefault(),t.stopPropagation();let s=e.id,i=document.querySelector(`dd[aria-labelledby=${s}]`);"active"===e.classList.value?(e.classList.remove("active"),e.parentNode.classList.remove("active"),i.classList.add("collapsed"),i.classList.remove("show"),e.blur()):(e.classList.add("active"),e.parentNode.classList.add("active"),i.classList.remove("collapsed"),i.classList.add("show"),e.blur())}},t.prototype.init=function(t,e){let s=this;s.setParentEL(t),s.setOpts(e),s.terms=s.getObjs(document.querySelectorAll(`${s.el} ${s.settings.dt}`)),document.querySelector(s.el)&&document.querySelector(s.el).addEventListener("click",s.logic.bind(s)),s.definitions=s.getObjs(document.querySelectorAll(`${s.el} ${s.settings.dd}`)),s.definitions.reduce(((t,e)=>(e.classList.add("collapsed"),s.settings.openFirst&&1===t&&e.classList.add("show"),s.settings.openAll&&e.classList.add("show"),e.setAttribute("id",`${s.getID()}-definition`+t),e.setAttribute("aria-labelledby",`${s.getID()}-term`+t),t+=1,t)),1),s.terms.reduce(((t,e)=>(s.settings.openFirst&&1===t&&e.classList.add("active"),s.settings.openAll&&e.classList.add("active"),e.setAttribute("id",`${s.getID()}-term`+t),e.setAttribute("data-target",`${s.getID()}-definition`+t),e.setAttribute("tabindex","0"),t+=1,t)),1)};export{t as jsa};