From 228a8d14dab46bcf790c75eaf032f71d048114db Mon Sep 17 00:00:00 2001 From: Nessrine88 Date: Thu, 29 Jun 2023 20:34:31 +0100 Subject: [PATCH 1/8] update linters --- main.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main.js b/main.js index 2baed62..9415451 100644 --- a/main.js +++ b/main.js @@ -165,3 +165,13 @@ seeButtons.forEach((button, index) => { }); }); }); +// Validate form + +const email = document.querySelector("#email"); + +email.addEventListener("input", (event) => { + let correctInput= event.target.value.toLowerCase(); + if (event.target.value !== correctInput) { + email.setCustomValidity("Please enter your email address using lowercase letters."); + } +}); \ No newline at end of file From 342573c933f22f9075e3f35f131f90c96e1bf9f9 Mon Sep 17 00:00:00 2001 From: jovasal Date: Thu, 29 Jun 2023 17:13:00 -0500 Subject: [PATCH 2/8] GetElementByID GetElementByID --- main.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 9415451..25e806b 100644 --- a/main.js +++ b/main.js @@ -174,4 +174,13 @@ email.addEventListener("input", (event) => { if (event.target.value !== correctInput) { email.setCustomValidity("Please enter your email address using lowercase letters."); } -}); \ No newline at end of file +}); + +// Function to save input data to local storage + +export default function preserveData() { + function saveFormData() { + const nameInput = document.getElementById('name'); + const emailInput = document.getElementById('email'); + const messageInput = document.getElementById('message'); + } \ No newline at end of file From 4d6ba133aa21f7679c4f22ff922c968b8e76ce69 Mon Sep 17 00:00:00 2001 From: Nessrine88 Date: Fri, 30 Jun 2023 01:30:07 +0100 Subject: [PATCH 3/8] Add a function that verify whether localStorage is both supported and available --- main.js | 81 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 11 deletions(-) diff --git a/main.js b/main.js index 25e806b..10296bf 100644 --- a/main.js +++ b/main.js @@ -167,20 +167,79 @@ seeButtons.forEach((button, index) => { }); // Validate form -const email = document.querySelector("#email"); +const email = document.querySelector('#email'); -email.addEventListener("input", (event) => { - let correctInput= event.target.value.toLowerCase(); +email.addEventListener('input', (event) => { + const correctInput = event.target.value.toLowerCase(); if (event.target.value !== correctInput) { - email.setCustomValidity("Please enter your email address using lowercase letters."); - } + email.setCustomValidity('Please enter your email address using lowercase letters.'); + } }); // Function to save input data to local storage -export default function preserveData() { - function saveFormData() { - const nameInput = document.getElementById('name'); - const emailInput = document.getElementById('email'); - const messageInput = document.getElementById('message'); - } \ No newline at end of file +// Verify whether localStorage is both supported and available + +function storageAvailable(type) { + let storage; + try { + storage = window[type]; + const x = '__storage_test__'; + storage.setItem(x, x); + storage.removeItem(x); + return true; + } catch (e) { + return ( + e instanceof DOMException + // everything except Firefox + && (e.code === 22 + // Firefox + || e.code === 1014 + // test name field too, because code might not be present + // everything except Firefox + || e.name === 'QuotaExceededError' + // Firefox + || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') + // acknowledge QuotaExceededError only if there's something already stored + && storage + && storage.length !== 0 + ); + } +} + +if (storageAvailable('localStorage')) { + // Yippee! We can use localStorage awesomeness +} else { + // Too bad, no localStorage for us +} + +// Get the form element + +const form = document.getElementById('myForm'); + +// Add event listener to the form's submit event +form.addEventListener('submit', (event) => { + event.preventDefault(); + + // Get form field values + const fullName = document.getElementById('name').value; + const firstName = document.getElementById('firstName').value; + const lastName = document.getElementById('lastName').value; + const email = document.getElementById('email').value; + const message = document.getElementById('message').value; + + // Create an object to store the form data + const formData = { + fullName, + firstName, + lastName, + email, + message, + }; + + // Convert the object to a JSON string + const formDataJson = JSON.stringify(formData); + + // Store the form data in local storage + localStorage.setItem('formData', formDataJson); +}); \ No newline at end of file From c865334c6d55a3c10913efdb81c691809b76ffd7 Mon Sep 17 00:00:00 2001 From: Nessrine88 Date: Fri, 30 Jun 2023 01:53:08 +0100 Subject: [PATCH 4/8] Updated functions --- index.html | 2 +- main.js | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/index.html b/index.html index 5daecf0..74e3b37 100644 --- a/index.html +++ b/index.html @@ -211,7 +211,7 @@

Skills

-
+ diff --git a/main.js b/main.js index 10296bf..041f072 100644 --- a/main.js +++ b/main.js @@ -216,12 +216,9 @@ if (storageAvailable('localStorage')) { // Get the form element const form = document.getElementById('myForm'); - -// Add event listener to the form's submit event form.addEventListener('submit', (event) => { - event.preventDefault(); - - // Get form field values + + // Get form field values const fullName = document.getElementById('name').value; const firstName = document.getElementById('firstName').value; const lastName = document.getElementById('lastName').value; @@ -236,10 +233,6 @@ form.addEventListener('submit', (event) => { email, message, }; - - // Convert the object to a JSON string const formDataJson = JSON.stringify(formData); - - // Store the form data in local storage localStorage.setItem('formData', formDataJson); }); \ No newline at end of file From 986b9c56fa5f11e649da3fe3db93e431d8fa0966 Mon Sep 17 00:00:00 2001 From: Nessrine88 Date: Fri, 30 Jun 2023 10:30:18 +0100 Subject: [PATCH 5/8] Update function and delete comments --- main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.js b/main.js index 041f072..533cce2 100644 --- a/main.js +++ b/main.js @@ -176,7 +176,7 @@ email.addEventListener('input', (event) => { } }); -// Function to save input data to local storage + // Verify whether localStorage is both supported and available From 70cf9f3a252c10263ad9cf66c0cc3dcbb94c6f5c Mon Sep 17 00:00:00 2001 From: Nessrine88 Date: Fri, 30 Jun 2023 10:42:20 +0100 Subject: [PATCH 6/8] update js file --- main.js | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index da2c072..041f072 100644 --- a/main.js +++ b/main.js @@ -165,7 +165,6 @@ seeButtons.forEach((button, index) => { }); }); }); - // Validate form const email = document.querySelector('#email'); @@ -174,4 +173,66 @@ email.addEventListener('input', (event) => { const correctInput = event.target.value.toLowerCase(); if (event.target.value !== correctInput) { email.setCustomValidity('Please enter your email address using lowercase letters.'); + } +}); + +// Function to save input data to local storage + +// Verify whether localStorage is both supported and available + +function storageAvailable(type) { + let storage; + try { + storage = window[type]; + const x = '__storage_test__'; + storage.setItem(x, x); + storage.removeItem(x); + return true; + } catch (e) { + return ( + e instanceof DOMException + // everything except Firefox + && (e.code === 22 + // Firefox + || e.code === 1014 + // test name field too, because code might not be present + // everything except Firefox + || e.name === 'QuotaExceededError' + // Firefox + || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') + // acknowledge QuotaExceededError only if there's something already stored + && storage + && storage.length !== 0 + ); + } +} + +if (storageAvailable('localStorage')) { + // Yippee! We can use localStorage awesomeness +} else { + // Too bad, no localStorage for us +} +// Get the form element + +const form = document.getElementById('myForm'); +form.addEventListener('submit', (event) => { + + // Get form field values + const fullName = document.getElementById('name').value; + const firstName = document.getElementById('firstName').value; + const lastName = document.getElementById('lastName').value; + const email = document.getElementById('email').value; + const message = document.getElementById('message').value; + + // Create an object to store the form data + const formData = { + fullName, + firstName, + lastName, + email, + message, + }; + const formDataJson = JSON.stringify(formData); + localStorage.setItem('formData', formDataJson); +}); \ No newline at end of file From 0358843d6d52de93436c7946909d9557b8d17f39 Mon Sep 17 00:00:00 2001 From: Nessrine88 Date: Fri, 30 Jun 2023 10:45:09 +0100 Subject: [PATCH 7/8] update eslinter --- main.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/main.js b/main.js index 041f072..6150834 100644 --- a/main.js +++ b/main.js @@ -216,9 +216,8 @@ if (storageAvailable('localStorage')) { // Get the form element const form = document.getElementById('myForm'); -form.addEventListener('submit', (event) => { - - // Get form field values +form.addEventListener('submit', () => { + // Get form field values const fullName = document.getElementById('name').value; const firstName = document.getElementById('firstName').value; const lastName = document.getElementById('lastName').value; From 00c5249cb4d7ce7a5bc2cc44a6b293781c748aab Mon Sep 17 00:00:00 2001 From: Nessrine88 Date: Fri, 30 Jun 2023 20:28:23 +0100 Subject: [PATCH 8/8] debugging exercice --- main.js | 42 ++++-------------------------------------- 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/main.js b/main.js index 6150834..c6429fe 100644 --- a/main.js +++ b/main.js @@ -1,13 +1,13 @@ // Get necessary elements const menuIcon = document.getElementById('menuIcon'); const closeIcon = document.getElementById('closeIcon'); -const menuList = document.getElementById('menuList'); +const menuList = document.getElementById('#menuList'); // Add event listener to the menu icon menuIcon.addEventListener('click', () => { menuIcon.style.display = 'none'; closeIcon.style.display = 'inline-block'; - menuList.classList.add('open'); + menuList.classList.add('.open'); }); // Add event listener to the close icon @@ -19,7 +19,7 @@ closeIcon.addEventListener('click', () => { // Add event listeners to the menu options const menuOptions = menuList.getElementsByTagName('a'); -for (let i = 0; i < menuOptions.length; i += 1) { +for (let i = 0; i <= menuOptions.length; i += 1) { menuOptions[i].addEventListener('click', function menuOption(e) { e.preventDefault(); // Prevent the default link behavior @@ -178,40 +178,6 @@ email.addEventListener('input', (event) => { // Function to save input data to local storage -// Verify whether localStorage is both supported and available - -function storageAvailable(type) { - let storage; - try { - storage = window[type]; - const x = '__storage_test__'; - storage.setItem(x, x); - storage.removeItem(x); - return true; - } catch (e) { - return ( - e instanceof DOMException - // everything except Firefox - && (e.code === 22 - // Firefox - || e.code === 1014 - // test name field too, because code might not be present - // everything except Firefox - || e.name === 'QuotaExceededError' - // Firefox - || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') - // acknowledge QuotaExceededError only if there's something already stored - && storage - && storage.length !== 0 - ); - } -} - -if (storageAvailable('localStorage')) { - // Yippee! We can use localStorage awesomeness -} else { - // Too bad, no localStorage for us -} // Get the form element @@ -229,7 +195,7 @@ form.addEventListener('submit', () => { fullName, firstName, lastName, - email, + email; message, }; const formDataJson = JSON.stringify(formData);