{% from "govuk/components/select/macro.njk" import govukSelect %}
{% from "../question-format-hint/macro.njk" import digitalmarketplaceQuestionFormatHint %}

{% set name = params.question.id %}
{% set items = [] %}
{% set default_option =  params.question.default_option | default({})%}
{% set questionText = params.question.question + " (" + (params.question.optional_text if params.question.optional_text else "optional") + ")" if params.question.optional else params.question.question %}

{% if params.errors[name] %}
  {% set errorMessage = { "text": params.errors[name]["message"] } %}
{% elif params.frameworkReusedFrom and params.data[name] %}
  {% set errorMessage = {
    "text": "This answer is from your " + params.frameworkReusedFrom + " declaration",
    "visuallyHiddenText": "Notice"
  } %}
  {% set formGroupClasses = "dm-form-group--declaration-reuse" %}
{% endif %}

{% set default_value = default_option.value if default_option.value else default_option.label | default("") %}
{% set default_item = {
  text: default_option.label,
  value: default_value,
  selected: default_value == params.data[name]
} %}
{% set _items = items.push(default_item) %}

{% for option in params.question.options %}
  {% set value = option.value if option.value else option.label %}
  {% set _items = items.push({
    text: option.label,
    value: value,
    selected: value == params.data[name]
  }) %}
{% endfor %}

{{ govukSelect({
  name: name,
  id: "input-" + name,
  label: {
    html: questionText,
    classes: "govuk-label--m"
  },
  formGroup: {
    classes: formGroupClasses
  },
  items: items,
  hint: {
    html: digitalmarketplaceQuestionFormatHint(params.question)
  } if params.question.hint or params.question.question_advice,
  value: params.data[name],
  errorMessage: errorMessage if errorMessage
}) }}
