Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
template.js 2.05 KiB
Newer Older
peter_rabbit's avatar
peter_rabbit committed
"use strict";

peter_rabbit's avatar
peter_rabbit committed
const NAV_MENU_ITEMS = [
    ["/public/", "Accueil"],
    ["/public/games/", "Jeux"],
    ["/public/software-development/", "Software"],
    [
        "/public/education/",
        "Pédagogie",
        [
            // submenu
            ["/public/education/#game-studio-club", "Game Studio Club"],
            ["/public/education/#popularization", "Animations vulgarisation"],
        ],
    ],
];

peter_rabbit's avatar
peter_rabbit committed
class Template {
    constructor(props) {
        this.props = props;
    }

peter_rabbit's avatar
peter_rabbit committed
    renderMenu(menuItemsArray, isSubmenu = false) {
        const r = {
            tag: "ul",
            class: isSubmenu ? "submenu" : "",
            contents: menuItemsArray.map(link => {
                const [href, text, submenu] = link;
                return {
                    tag: "li",
                    class: !isSubmenu && window.location.pathname === href ? "active" : "",
                    contents: [{ tag: "a", href, contents: text }].concat(
                        submenu ? [this.renderMenu(submenu, true)] : []
                    ),
                };
            }),
        };
        return r;
    }

peter_rabbit's avatar
peter_rabbit committed
    render() {
        return {
            tag: "main",
            contents: [
                {
                    tag: "header",
                    contents: [
                        {
                            tag: "nav",
peter_rabbit's avatar
peter_rabbit committed
                            contents: [this.renderMenu(NAV_MENU_ITEMS)],
peter_rabbit's avatar
peter_rabbit committed
                        },
                    ],
                },
                {
                    tag: "div",
                    id: "page-container",
                    contents: [this.props.page.render()],
                },
                {
                    tag: "footer",
                    contents: [
                        {
                            tag: "a",
                            href: "mailto:kuadrado-software@tutanota.com",
                            contents: "kuadrado-software@tutanota.com",
                        },
                    ],
                },
            ],
        };
    }
}

module.exports = Template;