{% from "govuk/components/input/macro.njk" import govukInput %}
{%- from "moj/components/date-picker/macro.njk" import mojDatePicker -%}


{% macro dprDate(dateData, label, parameterSuffix = '', toggleMin = true, toggleMax = true, parameterPrefix = 'filters.') %}
  {% set name = dateData.name %}
  {% set text = dateData.text %}
  {% set displayName = dateData.displayName %}
  {% if not displayName  %}
    {% set displayName = text %}
  {% endif %}
  {% set value = dateData.value %}
  {% set mandatory = dateData.mandatory %}
  {% set minDate = dateData.min %}
  {% set maxDate = dateData.max %}
  {% set id = parameterPrefix + name + parameterSuffix %}

  {% set defaultMinDate = '1977-05-25' %}
  {% set defaultMaxDate = '9999-01-01'%}
  
  {% if not minDate %}
    {% set toggleMin = false %}
    {% set minDate = defaultMinDate %}
  {% endif %}
  
  {% if not maxDate %}
    {% set toggleMax = false %}
    {% set maxDate = defaultMaxDate %}
  {% endif %}

  {% if label %}
    {% set labelText = {
      text: label | capitaliseSentence
    } %}
  {% endif %}

  {% if value %}
    {% set value = value | dprDate %} 
  {% endif %}

  <div class="dpr-date" 
    data-dpr-module="date-input" 
    data-required="{{ mandatory }}" 
    data-display-name="{{ displayName }}"  
    data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" 
    data-min="{{ minDate }}"
    data-max="{{ maxDate }}"
    data-pattern-hint="DD/MM/YYYY">
    {% if text %}
    <label class="govuk-label govuk-label govuk-!-font-weight-bold" for="{{id}}">
      {{ text }}
    </label>
    {% endif %}

    
    {{ mojDatePicker({
      id: id,
      name: id,
      label: labelText,
      value: value,
      minDate: minDate | dprDate,
      maxDate: maxDate | dprDate,
      hint: {
        text: "For example 17/05/2024."
      },
      errorMessage: {
        text: ''
      } if mandatory
    }) }}

    {% if toggleMin and minDate or toggleMax and maxDate %}
    <div class="daterange-set-to-minmax__container">
    {% if toggleMin and minDate %}
      <a class="govuk-body-s daterange-set-to-minmax" 
        data-set-to-input='{{ id }}' 
        data-set-min-max-value={{ minDate | dprDate }} 
        data-set-min-max-trigger='true'
        href="#"
      > 
        Set value to minimum date: {{ minDate | dprDate }}
      </a>
      {% endif %}

      {% if toggleMax and maxDate %}
      <a class="govuk-body-s daterange-set-to-minmax" 
        data-set-to-input='{{ id }}' 
        data-set-min-max-value={{ maxDate | dprDate }} 
        data-set-min-max-trigger='true'
        href="#"
      >
        Set value to maximum date: {{ maxDate | dprDate }}
      </a>
    {% endif %}
    </div>
    {% endif %}
  </div>
{% endmacro %}
