Newer
Older
"use strict";
const { images_url } = require("../../../constants");
const translator = require("ks-cheap-translator");
const t = translator.trad.bind(translator);
{ url: "/games/", text: "Jeux" },
{
url: "/education/",
text: "Pédagogie",
},
{ url: "/software-development/", text: "Software" }
];
class NavBar {
constructor() {
this.initEventHandlers();
}
handleBurgerClick() {
document.getElementById("nav-menu-list").classList.toggle("responsive-show");
}
initEventHandlers() {
window.addEventListener("click", event => {
if (
event.target.id !== "nav-menu-list" &&
!event.target.classList.contains("burger") &&
!event.target.parentNode.classList.contains("burger")
) {
document.getElementById("nav-menu-list").classList.remove("responsive-show");
}
});
}
handle_chang_lang(lang) {
translator.update_translations(lang).then(() => {
obj2htm.renderCycle();
}).catch(err => console.log(err));
}
renderHome() {
return {
tag: "div",
class: "home",
contents: [
{
tag: "a",
src: `${images_url}/logo_kuadrado.svg`,
src: `${images_url}/logo_kuadrado_txt.svg`,
],
},
],
};
}
renderMenu(menuItemsArray, isSubmenu = false, parentUrl = "") {
return {
tag: "ul",
id: "nav-menu-list",
class: isSubmenu ? "submenu" : "",
contents: menuItemsArray.map(item => {
const { url, text, submenu } = item;
const href = `${parentUrl}${url}`;
return {
tag: "li",
class: !isSubmenu && window.location.pathname === href ? "active" : "",
contents: [
{
tag: "a",
href,
].concat(submenu ? [this.renderMenu(submenu, true, url)] : []),
}).concat({
tag: "li",
class: "lang-flags",
contents: ["fr", "en"].map(lang => {
return {
tag: "img", src: `${images_url}/flag-${lang}.svg`,
class: translator.locale === lang ? "selected" : "",
onclick: this.handle_chang_lang.bind(this, lang)
}
})
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
}),
};
}
renderResponsiveBurger() {
return {
tag: "div",
class: "burger",
onclick: this.handleBurgerClick.bind(this),
contents: [{ tag: "span", contents: "···" }],
};
}
render() {
return {
tag: "nav",
contents: [
this.renderHome(),
this.renderResponsiveBurger(),
this.renderMenu(NAV_MENU_ITEMS),
],
};
}
}
module.exports = NavBar;