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
edu-article.js 2.86 KiB
Newer Older
Pierre Jarriges's avatar
Pierre Jarriges committed
"use strict";

const { images_url } = require("../../../../constants");
const ImageCarousel = require("../../../generic-components/image-carousel");
const { getArticleBody } = require("../../../lib/article-utils");

class EduArticle {
    constructor(props) {
        this.props = props;
    }

    render() {
        const { title, body, subtitle, images, details = [] } = this.props;

        return {
            tag: "article",
            class: "edu-article",
            typeof: "Article",
            contents: [
                {
                    tag: "h2",
                    class: "edu-art-title",
                    contents: title,
                    property: "name",
                },
                {
                    tag: "div", class: "edu-art-image",
                    contents: [
                        {
                            tag: "img", src: `${images_url}/${images[0]}`
                        }
                    ]
                },
                {
                    tag: "h3",
                    class: "edu-art-subtitle",
                    contents: subtitle,
                    property: "alternativeHeadline",
                },
                {
                    tag: "div",
                    class: "edu-art-description",
                    contents: getArticleBody(body),
                    property: "description",
                },
                images.length > 1 && {
                    tag: "div", class: "edu-art-carousel", contents: [
                        new ImageCarousel({ images: images.map(img => `${images_url}/${img}`) }).render()
                    ]
                },
                details.length > 0 && {
                    tag: "div",
                    class: "article-details edu-art-details",
                    contents: [
                        {
                            tag: "h2",
                            contents: "Details",
                        },
                        {
                            tag: "ul",
                            class: "details-list",
                            contents: details.map(detail => {
                                return {
                                    tag: "li",
                                    class: "detail",
                                    contents: [
                                        { tag: "label", contents: detail.label },
                                        {
                                            tag: "div",
                                            class: "detail-value",
                                            contents: detail.value
                                        },
                                    ],
                                };
                            }),
                        },
                    ],
                },
            ],
        };
    }
}

module.exports = EduArticle;