UNPKG

@gouvfr/dsfr-forge

Version:

Le module `dsfr-forge` offre des outils et utilitaires de développement partagés entre les différents modules du Système de Design de l’État - DSFR.

59 lines (47 loc) 1.32 kB
import { log } from '../helpers/index.js'; import deepMerge from 'deepmerge'; class TagAttributes { constructor () { this._classes = []; this._attributes = {}; } setClasses (classes) { this._classes = classes; } addClass (className) { this._classes.push(className); } addClasses (...className) { this._classes.push(...className); } get classes () { return this._classes; } setAttribute (name, value) { if (value === undefined || value === null) { log.warn(`Trying to set an undefined or null attribute ${name}`); return; } this._attributes[name] = value; } getAttribute (name) { return this._attributes[name]; } hasAttribute (name) { return this._attributes.hasOwnProperty(name); } getAttributes () { const attributes = structuredClone(this._attributes); const classes = this._classes.slice() || []; if (attributes.class) classes.push(...attributes.class.split(' ')); if (classes.length) attributes.class = classes.join(' '); return attributes; } render () { const attributes = this.getAttributes(); const entries = Object.entries(attributes); if (!entries.length) return ''; return entries.map(([key, value]) => ` ${key}="${value}"`).join(''); } } export { TagAttributes };