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

71 lines (65 loc) 1.58 kB
import { log } from '@gouvfr/dsfr-forge'; import { BadgesMap } from './badges-map.js'; class Badges { constructor(data) { let {ids, resource} = data; if (typeof ids === 'string') ids = ids.split(','); if (!Array.isArray(ids)) { log.error(`Badge must be a string or an array of strings, received: ${typeof ids}`); this._node = {}; return; } const badges = ids.map(id => this._formatBadge(id, resource)); if (badges.every(badge => Object.keys(badge).length === 0)) { this._node = {}; return; } this._node = { type: 'htmlContainer', tagName: 'ul', classes: ['fr-badges-group', 'fr-mb-2v'], children: badges }; } _getIconClasses (icon) { if (icon === false) { return ['fr-badge--no-icon']; } if (icon === true) { return []; } return [`fr-icon-${icon}`]; } _formatBadge (id, resource) { const badgeData = BadgesMap.get(id); if (!badgeData) { log.error(`Unknown badge type: ${id}`); return {}; } return { type: 'htmlContainer', tagName: 'li', children: [ { type: 'paragraph', classes: [ 'fr-badge', `fr-badge--${badgeData.type}`, `fr-badge--${badgeData.size}`, ...this._getIconClasses(badgeData.icon) ], children: [ { type: 'text', value: resource[id], } ] } ] }; } get node () { return this._node; } } export { Badges };