Files
bookhoard/web/src/profile-modal.ts
T

33 lines
779 B
TypeScript

import { Alpine } from "./alpine";
let escapeHandler: ((e: KeyboardEvent) => void) | null = null;
function closeProfileModal(): void {
const modal = document.getElementById("profile-modal");
if (modal) {
modal.remove();
}
// Remove escape key listener when modal closes
if (escapeHandler) {
document.removeEventListener("keydown", escapeHandler);
escapeHandler = null;
}
}
function setupProfileModal(): void {
// Set up escape key listener to close modal
escapeHandler = (e: KeyboardEvent) => {
if (e.key === "Escape") {
closeProfileModal();
}
};
document.addEventListener("keydown", escapeHandler);
}
export { closeProfileModal, setupProfileModal };
Alpine.store("profileModal", {
closeProfileModal,
setupProfileModal,
});