<%#
# paramètres link

* link.label (string, required) : contenu texte

* link.markup (string, optional) : si non défini, a

* link.href (string, required) : adresse url du lien

* link.blank (bool, optional) : si true, target prend la valeur _blank, sinon _self

* link.disabled (boolean, optional) : si valeur true, link désactivé

* link.size (string, optional) : taille du lien
  valeurs :
  * sm
  * lg

* link.icon (string, optional) : icon du lien

* link.iconPlace (string, optional) : emplacement de l'icone
  si non défini alors que le paramètre icon est défini, bouton avec icone seule, sans libellé
  valeurs :
  * left : icone à gauche du libellé
  * right : icone à droite du libellé

* link.alignOnContent (boolean, optional) : ajoute des marges négatives pour être aligné sur le contenu

* link.attributes (object, optional) : attributs spécifiques à rajouter sur le composant

* link.classes (array, optional) : classes spécifiques à rajouter sur le composant

%>
<% eval(include('../../../../../core/index.ejs')); %>

<%
const link = locals.link || {};
let linkClasses = link.classes || [];
let linkAttrs = link.attributes || {};

const markup = link.markup || 'a';

linkClasses.push(prefix + '-link');

switch(link.size) {
    case 'sm':
        linkClasses.push(prefix + '-link--sm');
        break;

    case 'lg':
        linkClasses.push(prefix + '-link--lg');
        break;
}

if (link.icon !== undefined) linkClasses.push(prefix + '-fi-' + link.icon);

if (link.iconPlace !== undefined) switch(link.iconPlace)
{
    case 'left':
        linkClasses.push(prefix + '-link--icon-left');
        break;

    case 'right':
        linkClasses.push(prefix + '-link--icon-right');
        break;
}

if (link.disabled === true) {
    switch(markup) {
        case 'input':
        case 'button':
            linkAttrs['disabled'] = '';
            break;

        case 'a':
            linkAttrs['aria-disabled'] = 'true';
            linkAttrs['role'] = 'link';
            break;
    }
} else if (markup === 'a') {
    linkAttrs.href = link.href || '[url - à modifier]';
    switch (true) {
        case link.blank:
            linkAttrs = {title: getBlankTitle(link.label), target: '_blank', rel: 'noopener external', ...linkAttrs};
            break;

        case link.self:
            linkAttrs.target = '_self';
            break;
    }
}

if (link.alignOnContent) linkClasses.push(`${prefix}-link--align-on-content`)
%>

<<%= markup %> <%- includeClasses(linkClasses)%> <%- includeAttrs(linkAttrs); %>><%- link.label %></<%= markup %>>
