PageSourceSearch

https://www.bioraw.ca/cdn/shop/t/143/assets/ModalDialog.js?v=90873823614354809471712921928

js bioraw.ca collected 2026-09-30 12:41:14 UTC 2,943 bytes, 2 lines download raw bytes

1const trapFocusHandlers={};class ModalDialog extends HTMLElement{constructor(){super(),this.modal=this.querySelector(".modal-popup"),this.modalOpeners=document.querySelectorAll('[data-modal-opener="'+this.id+'"]')}connectedCallback(){this.modalOpeners.length>0&&this.modalOpeners.forEach(opener=>{opener.addEventListener("click",()=>{this.show(opener)})}),this.querySelector('[id^="ModalClose-"]')&&this.querySelector('[id^="ModalClose-"]').addEventListener("click",this.hide.bind(this)),this.addEventListener("click",evt=>{evt.target.nodeName==="MODAL-DIALOG"&&this.hide()}),this.addEventListener("keyup",evt=>{evt.code.toUpperCase()==="ESCAPE"&&this.hide()})}show(opener,content=null){this.openedBy=opener,this.modal.classList.remove("d-none"),SiteOverlay.prototype.showOverlay();let confirmationText=this.querySelector(".confirmationText");confirmationText&&(confirmationText.textContent=content),this.trapFocus(this),this.forceFocus(this.querySelector('[id^="ModalClose-"]'))}hide(){this.modal.classList.add("d-none"),SiteOverlay.prototype.hideOverlay(),this.removeTrapFocus(this.openedBy),this.id==="PopupModal-video"&&(this.querySelector(".video-container").innerHTML="")}forceFocus(element){if(!element)return;element.focus();let isFocused=!1;element===document.activeElement&&(isFocused=!0),isFocused||(element.setAttribute("tabindex","0"),setTimeout(()=>{element.focus()},500))}trapFocus(container,elementToFocus=container){const elements=this.getFocusableElements(container),first=elements[0],last=elements[elements.length-1];this.removeTrapFocus(),trapFocusHandlers.focusin=event=>{event.target!==container&&event.target!==last&&event.target!==first||document.addEventListener("keydown",trapFocusHandlers.keydown)},trapFocusHandlers.focusout=()=>{document.removeEventListener("keydown",trapFocusHandlers.keydown)},trapFocusHandlers.keydown=event=>{event.code.toUpperCase()==="TAB"&&(event.target===last&&!event.shiftKey&&(event.preventDefault(),first.focus()),(event.target===container||event.target===first)&&event.shiftKey&&(event.preventDefault(),last.focus()))},document.addEventListener("focusout",trapFocusHandlers.focusout),document.addEventListener("focusin",trapFocusHandlers.focusin),elementToFocus.focus()}getFocusableElements(container){return Array.from(container.querySelectorAll(".filter__container, [type='button'], a[href], a[data-href], button:enabled, [tabindex]:not([tabindex^='-']), [draggable], area, input:not([type=hidden]):enabled, select:enabled, textarea:enabled, object, iframe"))}removeTrapFocus(elementToFocus=null){document.removeEventListener("focusin",trapFocusHandlers.focusin),document.removeEventListener("focusout",trapFocusHandlers.focusout),document.removeEventListener("keydown",trapFocusHandlers.keydown),elementToFocus&&elementToFocus.focus()}}customElements.define("modal-dialog",ModalDialog);
2//# sourceMappingURL=/cdn/shop/t/143/assets/ModalDialog.js.map?v=90873823614354809471712921928

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.