Skip to content

Commit 9916db2

Browse files
committed
Création du bouton "partager" et gestion de la popup de partage.
1 parent e8c1acf commit 9916db2

File tree

4 files changed

+144
-1
lines changed

4 files changed

+144
-1
lines changed

index.html

+19
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<!-- Inclusion des 3 scripts nécessaires pour faire fonctionner le jeu -->
1212
<!-- Attention, l'ordre des fichiers js est important. -->
1313
<script src="scripts/config.js" defer></script>
14+
<script src="scripts/popup.js" defer></script>
1415
<script src="scripts/script.js" defer></script>
1516
<script src="scripts/main.js" defer></script>
1617
</head>
@@ -46,12 +47,30 @@ <h3>AzerType est une application en ligne pour apprendre à taper plus vite au c
4647
<div class="zoneScore">
4748
Votre score : <span>0</span>
4849
</div>
50+
51+
<div class="zonePartage">
52+
<button>Partager</button>
53+
</div>
4954

5055
</main>
5156

5257
<!-- FOOTER -->
5358
<footer>
5459
@Copyright : Openclassrooms.
5560
</footer>
61+
62+
<!-- Popup de partage -->
63+
<div class="popupBackground">
64+
<div class="popup">
65+
<div>Partagez votre score</div>
66+
<form>
67+
<label for="nom">Votre nom</label>
68+
<input type="text" name="nom" placeholder="Votre nom">
69+
<label for="email">Avec qui voulez-vous partager votre score ?</label>
70+
<input type="email" name="email" placeholder="nom@domaine.com">
71+
<button id="btnEnvoyerMail">Envoyer</button>
72+
</form>
73+
</div>
74+
</div>
5675
</body>
5776
</html>

scripts/popup.js

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*********************************************************************************
2+
*
3+
* Ce fichier contient toutes les fonctions nécessaires à l'affichage et à la
4+
* fermeture de la popup de partage.
5+
*
6+
*********************************************************************************/
7+
8+
9+
/**
10+
* Cette fonction affiche la popup pour partager son score.
11+
*/
12+
function afficherPopup() {
13+
let popupBackground = document.querySelector(".popupBackground")
14+
popupBackground.classList.add("active")
15+
}
16+
17+
/**
18+
* Cette fonction cache la popup pour partager son score.
19+
*/
20+
function cacherPopup() {
21+
let popupBackground = document.querySelector(".popupBackground")
22+
popupBackground.classList.remove("active")
23+
}
24+
25+
/**
26+
* Cette fonction initialise les écouteurs d'événements qui concernent
27+
* l'affichage de la popup.
28+
*/
29+
function initAddEventListenerPopup() {
30+
// On écoute le click sur le bouton "partager"
31+
btnPartage = document.querySelector(".zonePartage button")
32+
let popupBackground = document.querySelector(".popupBackground")
33+
btnPartage.addEventListener("click", () => {
34+
// Quand on a cliqué sur le bouton partagé, on affiche la popup
35+
afficherPopup()
36+
})
37+
38+
// On écoute le click sur la div "popupBackground"
39+
popupBackground.addEventListener("click", (event) => {
40+
// Si on a cliqué précisément sur la popupBackground
41+
// (et pas un autre élément qui se trouve dedant)
42+
if (event.target === popupBackground) {
43+
// Alors on cache la popup
44+
cacherPopup()
45+
}
46+
})
47+
}

scripts/script.js

+17-1
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,34 @@ function afficherResultat(score, nbMotsProposes) {
1818
spanScore.innerText = affichageScore
1919
}
2020

21+
/**
22+
* Cette fonction affiche une proposition, que le joueur devra recopier,
23+
* dans la zone "zoneProposition"
24+
* @param {string} proposition : la proposition à afficher
25+
*/
2126
function afficherProposition(proposition) {
2227
let zoneProposition = document.querySelector(".zoneProposition")
2328
zoneProposition.innerText = proposition
2429
}
2530

31+
/**
32+
* Cette fonction construit et affiche l'email.
33+
* @param {string} nom : le nom du joueur
34+
* @param {string} email : l'email de la personne avec qui il veut partager son score
35+
* @param {string} score : le score.
36+
*/
37+
function afficherEmail(nom, email, score) {
38+
let mailto = `mailto:${email}+?subject=Partage du score Azertype&body=Salut, je suis ${nom} et je vais de réaliser le score ${score} sur le site d'Azertype !`
39+
location.href = mailto
40+
}
41+
2642
/**
2743
* Cette fonction lance le jeu.
2844
* Elle demande à l'utilisateur de choisir entre "mots" et "phrases" et lance la boucle de jeu correspondante
2945
*/
3046
function lancerJeu() {
3147
// Initialisations
48+
initAddEventListenerPopup()
3249
let score = 0
3350
let i = 0
3451
let listeProposition = listeMots
@@ -52,7 +69,6 @@ function lancerJeu() {
5269
} else {
5370
afficherProposition(listeProposition[i])
5471
}
55-
5672
})
5773

5874
// Gestion de l'événement change sur les boutons radios.

style/style.css

+61
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,67 @@ footer {
185185
font-size: 20px;
186186
}
187187

188+
.zonePartage {
189+
padding-top: 20px;
190+
}
191+
192+
/**
193+
* Gestion des popups
194+
*/
195+
196+
.popupBackground {
197+
display: none;
198+
position: fixed;
199+
height: 100vh;
200+
width: 100vw;
201+
background-color: rgba(255, 255, 255, 0.5);
202+
}
203+
204+
.popup {
205+
position: absolute;
206+
top: 50%;
207+
left: 50%;
208+
transform: translate(-50%, -50%);
209+
flex-wrap: wrap;
210+
justify-content: center;
211+
align-items: center;
212+
width: 300px;
213+
padding: 20px;
214+
text-align: center;
215+
color: white;
216+
font-size: 17px;
217+
font-weight: 500;
218+
background-color: #f76c5e;
219+
border-radius: 30px;
220+
z-index: 1;
221+
}
222+
223+
224+
225+
.active {
226+
display: flex !important;
227+
}
228+
229+
.popup p {
230+
width: 100%;
231+
margin-bottom: 20px;
232+
}
233+
234+
.popup div {
235+
font-size: 25px;
236+
padding : 5px;
237+
padding-bottom: 15px;
238+
}
239+
240+
/* Eléments de formulaire */
241+
.popup input {
242+
margin-bottom: 10px;
243+
}
244+
245+
.popup button {
246+
margin: 5px;
247+
}
248+
188249
/**
189250
* Responsive
190251
*/

0 commit comments

Comments
 (0)