{% extends "standard-form.njk" %}

{% from "date-input/macro.njk" import govukDateInput %}
{% from "inset-text/macro.njk" import govukInsetText %}
{% from "warning-text/macro.njk" import govukWarningText %}

{% set title = mssgs.dob_title_you if data.isLicenceForYou else mssgs.dob_title_other %}
{% set describedByTag = "date-of-birth-hint" %}

{%
    set errorMap = {
      'full-date': {
        'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error }
      },
      'day-and-month': {
        'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day_and_month }
      },
      'day-and-year': {
        'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day_and_year }
      },
      'month-and-year': {
        'object.missing': { ref: '#date-of-birth-month', text: mssgs.dob_error_missing_month_and_year }
      },
      'day': {
        'any.required': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day }
      },
      'month': {
        'any.required': { ref: '#date-of-birth-month', text: mssgs.dob_error_missing_month }
      },
      'year': {
        'any.required': { ref: '#date-of-birth-year', text: mssgs.dob_error_missing_year }
      },
      'non-numeric': {
        'number.base': { ref: '#date-of-birth-day', text: mssgs.dob_error_non_numeric }
      },
      'invalid-date': {
        'any.custom': { ref: '#date-of-birth-day', text: mssgs.dob_error_date_real }
      },
      'date-range': {
        'date.min': { ref: '#date-of-birth-day', text: mssgs.dob_error_year_min },
        'date.max': { ref: '#date-of-birth-day', text: mssgs.dob_error_year_max }
      }
    }
%}

{% set dateInputItems = [
    {
      label: mssgs.date_day,
      name: 'day',
      classes: "govuk-input--width-2 govuk-input--error" if data.isDayError else "govuk-input--width-2",
      value: payload['date-of-birth-day'],
      attributes: { maxlength : 2 }
    },
    {
      label: mssgs.date_month,
      name: 'month',
      classes: "govuk-input--width-2 govuk-input--error" if data.isMonthError else "govuk-input--width-2",
      value: payload['date-of-birth-month'],
      attributes: { maxlength : 2 }
    },
    {
      label: mssgs.date_year,
      name: 'year',
      classes: "govuk-input--width-4 govuk-input--error" if data.isYearError else "govuk-input--width-4",
      value: payload['date-of-birth-year'],
      attributes: { maxlength : 4 }
    }
  ]
%}

{% block pageContent %}
    <div id="{{ describedByTag }}" class="govuk-hint">
      {{ mssgs.dob_entry_hint }}
    </div>

    {{ govukWarningText({
      html: mssgs.dob_privacy_link_prefix + '<a class="govuk-link" href="' + _uri.privacy + '" rel="noreferrer noopener" target="_blank">' + mssgs.dob_privacy_link + '</a>',
      iconFallbackText: mssgs.warning
    }) }}

    {{ govukDateInput({
      id: "date-of-birth",
      namePrefix: "date-of-birth",
      items: dateInputItems,
      errorMessage: { text: errorMap[data.error.errorKey][data.error.errorValue].text } if data.error
    }) }}
{% endblock %}
