From a5298d978cba162b53d5e6a1a77977352972e696 Mon Sep 17 00:00:00 2001
From: Clotaire DUFRESNE <clotaire.dufresne.etu@univ-lille.fr>
Date: Wed, 10 Feb 2021 12:26:42 +0100
Subject: [PATCH] =?UTF-8?q?d=20avanc=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/Router.js          |  1 +
 src/main.js            |  9 +++------
 src/pages/Page.js      | 12 ++++++++++++
 src/pages/PizzaForm.js | 20 ++++++++++++++++++++
 src/pages/PizzaList.js |  5 +++--
 5 files changed, 39 insertions(+), 8 deletions(-)
 create mode 100644 src/pages/Page.js
 create mode 100644 src/pages/PizzaForm.js

diff --git a/src/Router.js b/src/Router.js
index 81e3782..64b8bfd 100644
--- a/src/Router.js
+++ b/src/Router.js
@@ -9,6 +9,7 @@ export default class Router {
 		if (route) {
 			this.titleElement.innerHTML = `<h1>${route.title}</h1>`;
 			this.contentElement.innerHTML = route.page.render();
+			route.page.mount?.(this.contentElement);
 		}
 	}
 
diff --git a/src/main.js b/src/main.js
index d5b527b..0cedb90 100644
--- a/src/main.js
+++ b/src/main.js
@@ -2,17 +2,14 @@ import Router from './Router';
 import data from './data';
 import PizzaList from './pages/PizzaList';
 import Component from './components/Component';
+import PizzaForm from './pages/PizzaForm';
 
 Router.titleElement = document.querySelector('.pageTitle');
 Router.contentElement = document.querySelector('.pageContent');
 
 const pizzaList = new PizzaList([]),
-	aboutPage = new Component('section', null, 'Ce site est génial'),
-	pizzaForm = new Component(
-		'section',
-		null,
-		'Ici vous pourrez ajouter une pizza'
-	);
+	aboutPage = new Component('p', null, 'ce site est génial'),
+	pizzaForm = new PizzaForm();
 Router.routes = [
 	{ path: '/', page: pizzaList, title: 'La carte' },
 	{ path: '/a-propos', page: aboutPage, title: 'À propos' },
diff --git a/src/pages/Page.js b/src/pages/Page.js
new file mode 100644
index 0000000..ff66805
--- /dev/null
+++ b/src/pages/Page.js
@@ -0,0 +1,12 @@
+import Component from '../components/Component';
+
+export default class Page extends Component {
+	element;
+
+	constructor(className, children) {
+		super('section', { name: 'class', value: className }, children);
+	}
+	mount(element) {
+		this.element = element;
+	}
+}
\ No newline at end of file
diff --git a/src/pages/PizzaForm.js b/src/pages/PizzaForm.js
new file mode 100644
index 0000000..20438f7
--- /dev/null
+++ b/src/pages/PizzaForm.js
@@ -0,0 +1,20 @@
+import Page from './Page.js';
+
+export default class PizzaForm extends Page {
+	render() {
+		return /*html*/ `
+			<form class="pizzaForm">
+				<label>
+					Nom :
+					<input type="text" name="name">
+				</label>
+				<button type="submit">Ajouter</button>
+			</form>`;
+	}
+
+	mount(element) {
+		super.mount(element);
+	}
+
+	submit(event) {}
+}
\ No newline at end of file
diff --git a/src/pages/PizzaList.js b/src/pages/PizzaList.js
index fcaedaf..fc69533 100644
--- a/src/pages/PizzaList.js
+++ b/src/pages/PizzaList.js
@@ -1,11 +1,12 @@
 import Component from '../components/Component.js';
 import PizzaThumbnail from '../components/PizzaThumbnail.js';
+import Page from './Page.js';
 
-export default class PizzaList extends Component {
+export default class PizzaList extends Page {
 	#pizzas;
 
 	constructor(pizzas) {
-		super('section', { name: 'class', value: 'pizzaList' });
+		super('pizzaList');// on pase juste la classe CSS souhaitée
 		this.pizzas = pizzas;
 	}
 
-- 
GitLab