Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import { ref } from "vue";
import type { Template } from "../types/template";
const isOpen = ref(false);
const currentTemplate = ref<Template | null>(null);
export function useModal() {
function openModal(template: Template): void {
currentTemplate.value = template;
isOpen.value = true;
// Prevent body scroll when modal is open
if (typeof window !== "undefined") {
document.body.style.overflow = "hidden";
}
}
function closeModal(): void {
isOpen.value = false;
currentTemplate.value = null;
// Restore body scroll
if (typeof window !== "undefined") {
document.body.style.overflow = "";
}
}
return {
isOpen,
currentTemplate,
openModal,
closeModal,
};
}
|