-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavascript.js
More file actions
102 lines (85 loc) · 2.76 KB
/
javascript.js
File metadata and controls
102 lines (85 loc) · 2.76 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
const filters = document.querySelectorAll(".filter");
const cards = document.querySelectorAll(".card");
filters.forEach(filter=>{
filter.addEventListener("click", ()=>{
filters.forEach(f=>f.classList.remove("active"));
filter.classList.add("active");
const type = filter.dataset.type;
cards.forEach(card=>{
if(type === "all" || card.classList.contains(type)){
card.style.display = "block";
} else {
card.style.display = "none";
}
});
});
});
const modal = document.getElementById("contactModal");
// Ouvre la modale
function openModal() {
if (!modal) return;
modal.classList.add("is-open");
modal.setAttribute("aria-hidden", "false");
document.body.style.overflow = "hidden";
}
// Ferme la modale
function closeModal() {
if (!modal) return;
modal.classList.remove("is-open");
modal.setAttribute("aria-hidden", "true");
document.body.style.overflow = "";
}
const navContact = document.querySelector('a[href="#contact"]');
if (navContact) {
navContact.addEventListener("click", (e) => {
e.preventDefault();
openModal();
});
}
// ✅ 2) Fermer en cliquant sur overlay / bouton fermer
document.addEventListener("click", (e) => {
if (!modal) return;
if (!modal.classList.contains("is-open")) return;
if (e.target.matches("[data-close]")) closeModal();
});
// ✅ 3) Fermer avec la touche ESC
document.addEventListener("keydown", (e) => {
if (e.key === "Escape") closeModal();
});
document.addEventListener("DOMContentLoaded", () => {
const modal = document.getElementById("contactModal");
if (!modal) return;
const openModal = () => {
modal.classList.add("is-open");
modal.setAttribute("aria-hidden", "false");
document.body.style.overflow = "hidden";
};
const closeModal = () => {
modal.classList.remove("is-open");
modal.setAttribute("aria-hidden", "true");
document.body.style.overflow = "";
};
// Ouvrir depuis le menu "Me contacter"
const navContact = document.querySelector('a[href="#contact"]');
if (navContact) {
navContact.addEventListener("click", (e) => {
e.preventDefault();
openModal();
});
}
// Fermer (overlay + boutons data-close)
modal.addEventListener("click", (e) => {
if (e.target.matches("[data-close]")) closeModal();
});
// ESC
document.addEventListener("keydown", (e) => {
if (e.key === "Escape") closeModal();
});
// TEST RAPIDE : tu peux ouvrir la modale depuis la console en tapant openContact()
window.openContact = openModal;
});
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav');
burger.addEventListener('click', () => {
nav.classList.toggle('active');
});