{% from "nhsuk/macros/attributes.njk" import nhsukAttributes %}
{% from "nhsuk/macros/icon.njk" import nhsukIcon %}

{#- Set classes for this component #}
{%- set classNames = "nhsuk-pagination" -%}

{%- if params.items | length %}
  {% set classNames = classNames ~ " nhsuk-pagination--numbered" %}
{% endif %}

{%- if params.classes %}
  {% set classNames = classNames ~ " " ~ params.classes %}
{% endif %}

{%- set previous = {
  href: params.previousUrl,
  labelText: params.previousPage
} if (params.previousUrl or params.previousPage) else params.previous -%}

{%- set next = {
  href: params.nextUrl,
  labelText: params.nextPage
} if (params.nextUrl or params.nextPage) else params.next -%}

{# Numbered page - included as a link within a list item. #}
{%- macro _pageItem(item) -%}
  <li class="nhsuk-pagination__item {%- if item.current %} nhsuk-pagination__item--current{% endif %} {%- if item.ellipsis %} nhsuk-pagination__item--ellipsis{% endif %} {%- if item.classes %} {{ item.classes }}{% endif %}">
  {% if item.ellipsis %}
    &ctdot;
  {% else %}
    <a class="nhsuk-pagination__link" href="{{ item.href }}" aria-label="{{ item.visuallyHiddenText | default("Page " ~ item.number) }}"
      {%- if item.current %} aria-current="page"{% endif %}
      {{- nhsukAttributes(item.attributes) }}>
      {{ item.number }}
    </a>
  {% endif %}
  </li>
{%- endmacro -%}

<nav class="{{ classNames }}" {%- if params.id %} id="{{ params.id }}"{% endif %} role="navigation" aria-label="{{ params.landmarkLabel | default("Pagination", true) }}"
  {{- nhsukAttributes(params.attributes) }}>
{% if previous.href and params.items | length %}
  <a href="{{ previous.href }}" class="nhsuk-pagination__previous" rel="prev">
    {{ nhsukIcon("arrow-left") | trim | indent(4) }}
    <span class="nhsuk-pagination__title">
    {% if previous.html or previous.text %}
      {{ previous.html | safe | trim | indent(6) if previous.html else previous.text }}
    {% else %}
      Previous<span class="nhsuk-u-visually-hidden"> page</span>
    {% endif %}
    </span>
  </a>
{% endif %}

{%- if params.items | length %}
  <ul class="nhsuk-pagination__list">
  {% for item in params.items %}
    {{ _pageItem(item) | indent(2) if item }}
  {% endfor %}
  </ul>
{% endif %}

{%- if next.href and params.items | length %}
  <a href="{{ next.href }}" class="nhsuk-pagination__next" rel="next">
    <span class="nhsuk-pagination__title">
    {% if next.html or next.text %}
      {{ next.html | safe | trim | indent(6) if next.html else next.text }}
    {% else %}
      Next<span class="nhsuk-u-visually-hidden"> page</span>
    {% endif %}
    </span>
    {{ nhsukIcon("arrow-right") | trim | indent(4) }}
  </a>
{% endif %}

{%- if not params.items | length %}
  <ul class="nhsuk-list nhsuk-pagination__list">
  {% if previous.href %}
    <li class="nhsuk-pagination-item--previous">
      <a class="nhsuk-pagination__link nhsuk-pagination__link--prev" href="{{ previous.href }}" rel="prev"
        {{- nhsukAttributes(previous.attributes) }}>
        <span class="nhsuk-pagination__title">
        {% if previous.html or previous.text %}
          {{ previous.html | safe | trim | indent(8) if previous.html else previous.text }}
        {% else %}
          Previous<span class="nhsuk-u-visually-hidden"> page</span>
        {% endif %}
        </span>
        {% if previous.labelText %}
        <span class="nhsuk-u-visually-hidden">:</span>
        <span class="nhsuk-pagination__page">{{ previous.labelText }}</span>
        {% endif %}
        {{ nhsukIcon("arrow-left") | trim | indent(8) }}
      </a>
    </li>
  {% endif %}

  {%- if next.href %}
    <li class="nhsuk-pagination-item--next">
      <a class="nhsuk-pagination__link nhsuk-pagination__link--next" href="{{ next.href }}" rel="next"
        {{- nhsukAttributes(next.attributes) }}>
        <span class="nhsuk-pagination__title">
        {% if next.html or next.text %}
          {{ next.html | safe | trim | indent(8) if next.html else next.text }}
        {% else %}
          Next<span class="nhsuk-u-visually-hidden"> page</span>
        {% endif %}
        </span>
        {% if next.labelText %}
        <span class="nhsuk-u-visually-hidden">:</span>
        <span class="nhsuk-pagination__page">{{ next.labelText }}</span>
        {% endif %}
        {{ nhsukIcon("arrow-right") | trim | indent(8) }}
      </a>
    </li>
  {% endif %}
  </ul>
{% endif %}
</nav>
