{% from "govuk/components/checkboxes/macro.njk" import govukCheckboxes %}
{% from "digitalmarketplace/components/question/macros/format-hint/macro.njk" import dmQuestionFormatHint %}

{% set name = params.question.id %}
{% set questionText = params.question.question + " (optional)" if params.question.optional else params.question.question %}

{% set items = [] %}
{% set valueToQuestions = {} %}

{% if params.question.followup %}
  {% for questionId, values in params.question.followup %}
    {% for value in values %}
      {% if value in valueToQuestions %}
        {% set _valueToQuestions = valueToQuestions | setAttribute(value, valueToQuestions[value] + " " + questionId) %}
      {% else %}
        {% set _valueToQuestions = valueToQuestions | setAttribute(value, questionId) %}
      {% endif %}
    {% endfor %}
  {% endfor %}
{% endif %}

{% for option in params.question.options %}
  {% set value = option.value if option.value else option.label %}
  {% set item = {
    text: option.label,
    value: value,
    checked: value in (params.data[name] or [])
  } %}
  {% if option.description %}
    {% set _item = item | setAttribute('hint', { html: option.description }) %}
  {% endif %}
  {% if valueToQuestions[value] %}
    {% set _item = item | setAttribute('attributes', { 'data-target': valueToQuestions[value] }) %}
  {% endif %}
  {% set _items = items.push(item) %}
{% endfor %}

{{ govukCheckboxes({
  name: name,
  idPrefix: "input-" + name,
  fieldset: {
    legend: {
      text: questionText,
      classes: "govuk-fieldset__legend--m"
    }
  },
  items: items,
  hint: {
    html: dmQuestionFormatHint(params.question)
  } if params.question.hint or params.question.question_advice,
  errorMessage: {
    text: params.errors[name]["message"]
  } if params.errors[name]
}) }}
