UNPKG

@gouvfr/dsfr-roller

Version:

Le module `dsfr-roller` permet de publier le site de documentation du Système de Design de l’État - DSFR

81 lines (73 loc) 2.21 kB
import { Node } from '../../node.js'; class HpShowcaseCardContainerDirective extends Node { constructor (data) { super(data); } structure (data) { this._data = data; this._image = Node.getImageChild(data); this._links = data.children[0]?.children?.filter(child => child.type === 'link'); this._structureImgDark = this.structureImgDark; this._structureLinks = this.structureLinks; return super.structure({ type: 'htmlContainer', tagName: 'li', classes: ['dsfr-doc-hp-showcase-card'], children: [ { type: 'htmlContainer', tagName: 'div', classes: ['dsfr-doc-hp-showcase-card__img'], children: [ { classes: ['fr-responsive-img', data.imgDarkUrl ? 'dsfr-doc-hp-showcase-card__img--light' : ''], ...this._image }, this._structureImgDark, ] }, this._structureLinks ] }); } get structureImgDark() { let structureImgDark = {}; if (this._data.imgDarkUrl) structureImgDark = { classes: ['fr-responsive-img', 'dsfr-doc-hp-showcase-card__img--dark'], type: 'image', attributes: { src: this._data.imgDarkUrl, alt: this._image.alt } } return structureImgDark; } get structureLinks() { let structureLinks = { ...this._links[0], classes: ['dsfr-doc-hp-showcase-card__link', 'dsfr-doc-hp-showcase-card__link--extended', 'fr-link'], }; if (this._links.length > 1) { structureLinks = { type: 'htmlContainer', tagName: 'ul', classes: ['dsfr-doc-hp-showcase-card__links-group'], children: this._links.map(link => { return { type: 'htmlContainer', tagName: 'li', children: [ { ...link, classes: ['dsfr-doc-hp-showcase-card__link', 'fr-link', 'fr-link--icon-right', 'fr-icon-arrow-right-line'], } ] } }) } } return structureLinks; } } HpShowcaseCardContainerDirective.NAME = 'hp-showcase-card'; export { HpShowcaseCardContainerDirective };