const closedBySupported = "closedBy" in HTMLDialogElement.prototype; /** * Safari does not yet support closedby="any", so this polyfill recreates * the dismissal behavior */ if (!closedBySupported) { window.addEventListener("load", () => { for (const hamburger of document.querySelectorAll( "[data-hamburger-menu]", )) { window.addEventListener("click", (event) => { const rect = hamburger.getBoundingClientRect(); var isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width; if (!isInDialog) { hamburger.close(); } }); } }); }