Skip to content
Snippets Groups Projects
Commit 6f2c3a86 authored by Thomas Fritsch's avatar Thomas Fritsch
Browse files

nettoyage et commentaires Router

parent 5c647514
Branches
No related tags found
No related merge requests found
......@@ -4,26 +4,34 @@ export default class Router {
static #menuElement;
static routes = [];
// static currentRoute;
/**
* Indique au Router la balise HTML contenant le menu de navigation
* Écoute le clic sur chaque lien et déclenche la méthode navigate
* @param element Élément HTML de la page qui contient le menu principal
*/
static set menuElement(element) {
this.#menuElement = element;
const links = element.querySelectorAll('a');
links.forEach(link => link.addEventListener('click', this.handleMenuClick));
}
static handleMenuClick = event => {
links.forEach(link =>
link.addEventListener('click', event => {
event.preventDefault();
this.navigate(event.target.getAttribute('href'));
};
})
);
}
/**
* Navigue dans l'application
* Affiche la page correspondant à `path` dans le tableau `routes`
* @param {String} path URL de la page courante
* @param {Boolean} pushState active/désactive le pushState (ajout d'une entrée dans l'historique de navigation)
*/
static navigate(path, pushState = true) {
const route = this.routes.find(route => route.path === path);
if (route) {
// this.currentRoute?.page.unMount();
this.titleElement.innerHTML = `<h1>${route.title}</h1>`;
this.contentElement.innerHTML = route.page.render();
route.page.mount?.(this.contentElement);
// this.currentRoute = route;
// gestion menu (classe "active")
const menuLink = this.#menuElement.querySelector(
`a[href="${route.path}"]`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment