<%#
# paramètres password

* password.id (string, required) : id du mot de passe

* password.input (object, optional) : paramètres de l'input (voir composant input)
  ** input.id (string, optional) : id de l'input
  ** input.label (string, optional) : libellé de l'input
  ** input.name (string, optional) : nom de l'input
  ** input.classes (array, optional) : classes spécifiques à rajouter sur l'input
  ** input.labelClasses (array, optional) : classes spécifiques à rajouter sur le label

* password.checkbox (object, optional) : paramètres de la case à cocher afficher/masquer le mot de passe (voir composant checkbox)
  ** checkbox.id (string, optional) : id de la case à cocher
  ** checkbox.label (string, required) : libellé de la case à cocher
  ** checkbox.ariaLabel (string, optional) : libellé pour l'accessibilité
  ** checkbox.attributes (object, optional) : attributs supplémentaires sur la case à cocher

* password.link (object, optional) paramètres du lien Mot de passe oublié
  ** password.link.href (string, required) : lien vers la page de récupération du mot de passe
  ** password.link.label (string, required) : libellé "Mot de passe oublié ?"
  ** password.link.attributes (object, optionnal) : Attributs supplémentaire sur le lien (ex: {target:'_blank'})

* password.attributes (object, optional) : attributs spécifiques à rajouter sur le mot de passe

* password.classes (array, optional) : classes spécifiques à rajouter sur le mot de passe

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

<%
const password = locals.password || {button:{}, input:{}}
const passwordClasses = [...password.classes || [], prefix + '-password'];
const attributes = password.attributes || {};
const describedby = [];
attributes.id = password.id;

const input = password.input || {};
input.id = input.id || password.id + '-input';
input.name = input.name || 'password';
input.classes = [...input.classes || [], prefix + '-password__input'];
input.labelClasses = [...input.labelClasses || [], prefix + '-password__label'];
input.type = 'password';
input.icon = true; // ajoute le wrapper pour l'icone capslock
input.required = true;
input.attributes = input.attributes || {};
input.attributes.autocapitalize = "off";
input.attributes.autocorrect = "off";
input.messages = password.messages;

let checkbox = false;
if (password.checkbox) {
  checkbox = {
    ...password.checkbox,
    classes: [...password.checkbox.classes || [], `${prefix}--password__checkbox`],
    label: password.checkbox.label || getText('show', 'password'),
    id: checkbox.id || `${password.id}-show`,
    size: 'sm',
    includeEmptyMessagesGroup: false,
    attributes: {
      'aria-label': password.checkbox.ariaLabel || getText('show.long', 'password'),
      ...password.checkbox.attributes
    }
  };
}

let link = false;
if (password.link) {
  link = {
    label: password.link.label || getText('link.label', 'password'),
    href: password.link.href || '#',
    classes: [...password.link.classes || [], `${prefix}-link`],
    attributes: {
      id: password.link.id,
      ...password.link.attributes
    }
  }
}
%>

<div <%- includeClasses(passwordClasses); %> <%- includeAttrs(attributes) %>>
  <%- include('../../../input/template/ejs/input.ejs', {input: input}); %>

  <% if (password.checkbox) { %>
    <div class="<%= prefix %>-password__checkbox <%= prefix %>-checkbox-group <%= prefix %>-checkbox-group--sm">
      <%- include('../../../checkbox/template/ejs/checkbox.ejs', {checkbox: checkbox}); %>
    </div>
    <% } %>

  <% if (password.link) { %>
    <p>
      <a href="<%= link.href %>" <%- includeClasses(link.classes); %> <%- includeAttrs(link.attributes); %>><%= link.label %></a>
    </p>
  <% } %>
</div>
