PageSourceSearch

https://shop.ignatiansolidarity.net/cdn/shop/t/6/assets/collapsible-tab.js?v=134763552569020766841727802274

js ignatiansolidarity.net collected 2026-09-24 18:58:16 UTC 5,011 bytes, 2 lines download raw bytes

1if(!customElements.get("collapsible-tab")){class CollapsibleTab extends HTMLElement{constructor(){super()}connectedCallback(){this.init()}disconnectedCallback(){this.destroy()}init(){this.dataset.destroy!=="true"&&(this.setDefaultData(),this.attachEvents(),this.getAttribute("open")==="true"?(this.selected=!0,this.classList.add(this.expandedClass,this.selectedClass),this.setExpandedAria(),this.fire("tabOpened"),window.FoxThemeEvents.emit("ON_COLLAPSIBLE_TAB_OPENED",this)):(this.content.style.height=this.collapsedHeight,this.classList.add(this.collapsedClass),this.setCollapsedAria()),this.content.removeAttribute("hidden"))}transitionendEventName(){let i,el=document.createElement("div"),transitions={transition:"transitionend",OTransition:"otransitionend",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(i in transitions)if(transitions.hasOwnProperty(i)&&el.style[i]!==void 0)return transitions[i]}expand(){const bindEvent=(ev=>{ev.target===this.content&&(this.content.removeEventListener(this.transitionendevent,bindEvent),this.isOpen&&requestAnimationFrame(()=>{this.content.style.transition="0",this.content.style.height="auto",requestAnimationFrame(()=>{this.content.style.height=null,this.content.style.transition=null,this.setExpandedAria(),this.classList.add(this.expandedClass),this.trySetTabIndex(this.content,0),this.fire("tabOpened"),window.FoxThemeEvents.emit("ON_COLLAPSIBLE_TAB_OPENED",this)})}))}).bind(this);this.content.addEventListener(this.transitionendevent,bindEvent),this.isOpen=!0,this.classList.remove(this.collapsedClass),this.content.style.height=this.content.scrollHeight+"px"}collapse(){const bindEvent=(ev=>{ev.target===this.content&&(this.content.removeEventListener(this.transitionendevent,bindEvent),!this.isOpen&&(this.fire("elementClosed"),window.FoxThemeEvents.emit("ON_COLLAPSIBLE_TAB_CLOSED",this),this.setCollapsedAria(),this.classList.add(this.collapsedClass),this.trySetTabIndex(this.content,-1)))}).bind(this);this.content.addEventListener(this.transitionendevent,bindEvent),this.isOpen=!1,this.classList.remove(this.expandedClass),requestAnimationFrame(()=>{this.content.style.transition="0",this.content.style.height=this.content.scrollHeight+"px",requestAnimationFrame(()=>{this.content.style.transition=null,this.content.style.height=this.collapsedHeight})})}open(){if(this.selected=!0,this.classList.add(this.selectedClass),this.fire("elementSelected"),window.FoxThemeEvents.emit("ON_COLLAPSIBLE_TAB_SELECTED",this),this.expand(),this.setAttribute("open",!0),this.oneAtATime){const parent=this.closest("[data-collapsible-parent]");if(parent){const allItems=parent.querySelectorAll("collapsible-tab");allItems.length&&allItems.forEach(item=>{item!==this&&item.selected&&item.close()})}}}close(){this.selected=!1,this.classList.remove(this.selectedClass),this.fire("elementUnselected"),window.FoxThemeEvents.emit("ON_COLLAPSIBLE_TAB_UNSELECTED",this),this.collapse(),this.removeAttribute("open")}toggle(event){if(event&&event.preventDefault(),this.selected)if(this.canCloseAll)this.close();else{const parent=this.closest("[data-collapsible-parent]");parent&&parent.querySelectorAll("collapsible-tab").forEach(item=>{if(item!==this&&item.selected)return this.close(),!0})}else this.open()}trySetTabIndex(el,index){const tappableElements=el.querySelectorAll(this.defaultElements);tappableElements&&tappableElements.forEach(e=>{e.setAttribute("tabindex",index)})}setExpandedAria(){this.trigger.setAttribute("aria-expanded","true"),this.content.setAttribute("aria-hidden","false")}setCollapsedAria(el){this.trigger.setAttribute("aria-expanded","false"),this.content.setAttribute("aria-hidden","true")}attachEvents(){this.trigger.addEventListener("click",event=>this.toggle(event))}setDefaultData(){this.events={elementSelected:[],tabOpened:[],elementUnselected:[],elementClosed:[]},this.transitionendevent=this.transitionendEventName(),this.expandedClass="is-expanded",this.selectedClass="is-selected",this.collapsedClass="is-collapsed",this.trigger=this.querySelector("[data-trigger]"),this.content=this.querySelector("[data-content]"),this.collapsedHeight="0px",this.defaultElements=["a","button","input:not(.focus-none)","[data-trigger]"],this.oneAtATime=!0,this.dataset.oneOpen&&(this.oneAtATime=this.dataset.oneOpen==="true"),this.canCloseAll=!this.dataset.canCloseAll||this.dataset.canCloseAll==="true"}fire(eventName){let callbacks=this.events[eventName]||[];for(let i=0;i<callbacks.length;i++)callbacks[i](this)}on(eventName,cb){this.events[eventName]&&this.events[eventName].push(cb)}destroy(){this.trigger&&this.trigger.removeEventListener("click",event=>this.toggle(event)),this.content&&this.content.removeAttribute("aria-hidden"),this.content&&(this.content.style.height="auto"),this.classList.remove(this.expandedClass,this.collapsedClass),this.removeAttribute("open")}}customElements.define("collapsible-tab",CollapsibleTab)}
2//# sourceMappingURL=/cdn/shop/t/6/assets/collapsible-tab.js.map?v=134763552569020766841727802274

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.