PageSourceSearch

https://museumstore.hmns.org/cdn/shop/t/40/assets/modal.js?v=158707362359803246971789141426

js hmns.org collected 2026-10-01 10:24:07 UTC 3,197 bytes, 2 lines download raw bytes

1import{trapFocus,removeTrapFocus}from"@archetype-themes/utils/a11y";export default class Modals{constructor(id,name,options){if(this.id=id,this.modal=document.getElementById(id),this.boundClose=this.close.bind(this),!this.modal)return!1;this.modalContent=this.modal.querySelector(".modal__inner");const defaults={close:".js-modal-close",open:".js-modal-open-"+name,openClass:"modal--is-active",closingClass:"modal--is-closing",bodyOpenClass:["modal-open"],bodyOpenSolidClass:"modal-open--solid",bodyClosingClass:"modal-closing",closeOffContentClick:!0,trapFocus:!0};this.config=Object.assign(defaults,options),this.modalIsOpen=!1,this.focusOnOpen=this.config.focusIdOnOpen?document.getElementById(this.config.focusIdOnOpen):this.modal,this.isSolid=this.config.solid,this.init()}init=function(){document.querySelectorAll(this.config.open).forEach(btn=>{btn.setAttribute("aria-expanded","false"),btn.addEventListener("click",this.open.bind(this))}),this.modal.querySelectorAll(this.config.close).forEach(btn=>{btn.addEventListener("click",this.close.bind(this))}),document.addEventListener("drawerOpen",function(){this.close()}.bind(this))};open=function(evt){let externalCall=!1;this.modalIsOpen||(evt?evt.preventDefault():externalCall=!0,evt&&evt.stopPropagation&&(evt.stopPropagation(),this.activeSource=evt.currentTarget.setAttribute("aria-expanded","true")),this.modalIsOpen&&!externalCall&&this.close(),this.modal.classList.add(this.config.openClass),document.documentElement.classList.add(...this.config.bodyOpenClass),this.isSolid&&document.documentElement.classList.add(this.config.bodyOpenSolidClass),this.modalIsOpen=!0,setTimeout(()=>{this.config.trapFocus&&trapFocus(this.modal,{elementToFocus:this.focusOnOpen})},100),document.dispatchEvent(new CustomEvent("modalOpen")),document.dispatchEvent(new CustomEvent("modalOpen."+this.id)),this.bindEvents())};close=function(evt){if(this.modalIsOpen){if(evt&&!evt.target.closest(".js-modal-close")){if(evt.target.closest(".modal__inner"))return}document.activeElement.blur(),this.modal.classList.remove(this.config.openClass),this.modal.classList.add(this.config.closingClass),document.documentElement.classList.remove(...this.config.bodyOpenClass),document.documentElement.classList.add(this.config.bodyClosingClass),window.setTimeout(function(){document.documentElement.classList.remove(this.config.bodyClosingClass),this.modal.classList.remove(this.config.closingClass),this.activeSource&&this.activeSource.getAttribute("aria-expanded")&&this.activeSource.setAttribute("aria-expanded","false").focus()}.bind(this),500),this.isSolid&&document.documentElement.classList.remove(this.config.bodyOpenSolidClass),this.modalIsOpen=!1,this.config.trapFocus&&removeTrapFocus(),document.dispatchEvent(new CustomEvent("modalClose."+this.id)),this.unbindEvents()}};bindEvents(){window.addEventListener("keyup",function(evt){evt.keyCode===27&&this.close()}.bind(this)),this.config.closeOffContentClick&&this.modal.addEventListener("click",this.boundClose)}unbindEvents(){this.config.closeOffContentClick&&this.modal.removeEventListener("click",this.boundClose)}}
2//# sourceMappingURL=/cdn/shop/t/40/assets/modal.js.map?v=158707362359803246971789141426

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.