From 2e2caabb8fda94035a25a78e116b46aab442aadc Mon Sep 17 00:00:00 2001 From: Clotaire DUFRESNE <clotaire.dufresne.etu@univ-lille.fr> Date: Sat, 13 Feb 2021 15:13:59 +0100 Subject: [PATCH] tp3 fini --- src/Router.js | 9 ++++++++- src/main.js | 7 +++++-- src/pages/PizzaForm.js | 16 ++++++++++++++-- src/pages/PizzaList.js | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/Router.js b/src/Router.js index 64b8bfd..4785ab1 100644 --- a/src/Router.js +++ b/src/Router.js @@ -4,12 +4,19 @@ export default class Router { static routes = []; static #menuElement; - static navigate(path) { + static navigate(path, noPush) { const route = this.routes.find(route => route.path === path); if (route) { this.titleElement.innerHTML = `<h1>${route.title}</h1>`; this.contentElement.innerHTML = route.page.render(); route.page.mount?.(this.contentElement); + const d = document.querySelectorAll('.mainMenu a'); + d.forEach(element => { + if (element.textContent == route.title) element.classList.add('active'); + else element.classList.remove('active'); + }); + if(!noPush) + window.history.pushState(null, null, route.path); } } diff --git a/src/main.js b/src/main.js index 0cedb90..18c8e03 100644 --- a/src/main.js +++ b/src/main.js @@ -18,8 +18,11 @@ Router.routes = [ Router.menuElement = document.querySelector('.mainMenu'); -Router.navigate('/'); // affiche une page vide pizzaList.pizzas = data; -Router.navigate('/'); // affiche la liste des pizzas +Router.navigate(document.location.pathname); // affiche la liste des pizzas document.querySelector('.newsContainer').setAttribute('style', ''); + +window.onpopstate = () => { + Router.navigate(document.location.pathname, true); +}; \ No newline at end of file diff --git a/src/pages/PizzaForm.js b/src/pages/PizzaForm.js index 20438f7..fdbdf43 100644 --- a/src/pages/PizzaForm.js +++ b/src/pages/PizzaForm.js @@ -14,7 +14,19 @@ export default class PizzaForm extends Page { mount(element) { super.mount(element); + const form = document.querySelector('form'); + form.addEventListener('submit', event => this.submit(event)); } - submit(event) {} -} \ No newline at end of file + submit(event) { + event.preventDefault(); + const target = event.target, input = target.querySelector('input[name=name]').value; + if(input === "") { + window.alert("Nom vide !"); + } + else { + window.alert(`La pizza ${input} a été ajoutée`); + target.reset(); + } + } +} diff --git a/src/pages/PizzaList.js b/src/pages/PizzaList.js index fc69533..64a39b9 100644 --- a/src/pages/PizzaList.js +++ b/src/pages/PizzaList.js @@ -6,7 +6,7 @@ export default class PizzaList extends Page { #pizzas; constructor(pizzas) { - super('pizzaList');// on pase juste la classe CSS souhaitée + super('pizzaList');// on passe juste la classe CSS souhaitée this.pizzas = pizzas; } -- GitLab