{#
/**
 * A wrapper for a form element that includes a label, description, inline errors, etc. *

 * Available variables:
 * - attributes: A Drupal attributes object for the input element.
 * - type: The type of the element.
 * - label: A rendered label element.
 * - labelDisplay: Where the label should be displayed.
 *    - before
 *    - after
 *    - float - Default. Enhanced by js. @see form.js
 * - children: The child form elements.
 * - errors: (optional) Any errors for this form element, may not be set.
 * - descriptionText: (string) An optional description for this element.
 */
#}
{% set attributes = union_attributes(attributes|default([])) %}
{% set labelDisplay = labelDisplay | default('before') %}
{% set baseClass = 'cu-input-list__item' %}
{% set _classes = [baseClass, baseClass ~ '--' ~ type ]%}
{% if (labelDisplay == 'float') %}
  {% set _classes = _classes|merge(['has-float-label', 'js-disabled']) %}
{% elseif (labelDisplay == 'before') %}
  {% set _classes = _classes|merge([baseClass ~ '--before']) %}
{% elseif (labelDisplay == 'after') %}
  {% set _classes = _classes|merge([baseClass ~ '--after']) %}
{% else %}
  {% set _classes = _classes|merge([baseClass ~ '--label-hidden']) %}
{% endif %}
<div{{ attributes.addClass(_classes) }}>
  {{ label }}
  {% if prefix is not empty %}
    <span class="cu-input__prefix">{{ prefix }}</span>
  {% endif %}
  {{ children }}
  {% if suffix is not empty %}
    <span class="cu-input__suffix">{{ suffix }}</span>
  {% endif %}
  {% if errors %}
    <div class="cu-input-message cu-input-message--invalid">
      {{ errors }}
    </div>
  {% endif %}
  {% if descriptionText %}
    <div class="cu-input-message">
      {{ descriptionText }}
    </div>
  {% endif %}
</div>
