{% apply spaceless %}

{#
  Parameters:
  - "items" (array) (default: []): array of checkbox_button
  - "name" (string) (default: '')
  - "invalid" (boolean) (default: false)
  - "invalid_icon" (object of type "icon") (default: {})
  - "sr_invalid_icon" (string) (default: ''): additional label for the invalid icon; for screen readers
  - "required" (boolean) (default: false)
  - "extra_classes" (string) (default: '')
  - "extra_attributes" (optional) (array) (default: [])
    - "name" (string) Attribute name, eg. 'data-test'
    - "value" (optional) (string) Attribute value, eg: 'data-test-1'
  Blocks:
  - "invalid_text"
#}

{# Internal properties #}

{% set _items = items|default([]) %}
{% set _name = name|default('') %}
{% set _invalid = invalid|default(false) %}
{% set _invalid_icon = invalid_icon|default({}) %}
{% set _sr_invalid_icon = sr_invalid_icon|default('') %}
{% set _required = required|default(false) %}
{% set _invalid_text = invalid_text|default('') %}
{% set _extra_attributes = extra_attributes|default([{}]) %}

{# Internal logic - Process properties #}

{% if extra_classes is defined and extra_classes is not empty %}
  {% set _css_class = _css_class ~ ' ' ~ extra_classes %}
{% endif %}

{% set _invalid_block  %}
  <div class="ecl-feedback-message">
  {% if _invalid_icon is not empty and _invalid_text is not empty %}
    {% include '@ecl/icon/icon.html.twig' with {
      icon: _invalid_icon|merge({
        size: 's',
      }),
      as_image: true,
      extra_accessibility: not _sr_invalid_icon ? {} : {
        title: _sr_invalid_icon,
      },
      extra_classes: 'ecl-feedback-message__icon',
    } only %}
  {% endif %}
   {%- block invalid_text _invalid_text -%}
  </div>
{% endset %}

{# Print the result #}

{% if _items is not empty %}
  {% if _items|length == 1 %}
    {% set _item_extra_classes = 'ecl-checkbox--single' %}
    {% set _item_required_text = _items[0].required_text|default('') %}
  {% endif %}
  {%- for _item in _items %}
    {% include '@ecl/checkbox/checkbox-item.html.twig' with _item|merge({
      name: _name,
      invalid: _item.invalid|default(_invalid),
      required: _item.required|default(_required),
      required_text: _item_required_text,
      extra_classes: _item.extra_classes|default(_item_extra_classes|default('')),
      extra_attributes: _item.extra_attributes|default(_extra_attributes),
    }) only %}
  {% endfor -%}
  {% if _items|length == 1 and
    _invalid and
    (_invalid_text is not empty or _invalid_icon is not empty) %}
    {{ _invalid_block }}
  {% endif %}
{% endif %}

{% endapply %}
