{% from '@bonniernews/dn-design-system-web/njk-helpers/attributes.njk' import getAttributes %}
{% from '@bonniernews/dn-design-system-web/components/text-button/text-button.njk' import TextButton %}

{% macro Pagination(params) %}
  {%- set componentClassName = "ds-pagination" %}
  {%- set classNamePrefix = componentClassName + "--" %}
  {%- set classes = [
    componentClassName,
    componentClassName + "--simple " if not params.pages,
    params.classNames if params.classNames
  ] | join(" ") %}
  {%- set attributes = getAttributes(params.attributes) %}
  {%- set visiblePages = 5 %}
  <nav class="{{ classes }}" {{- attributes | safe }}>
    {% set isPrevDisabled = true if not params.previousUrl else false %}
    {%- set prevClasses = [
      componentClassName + "__prev ",
      params.previousClassNames if params.previousClassNames,
      "invisible" if isPrevDisabled
    ] | join(" ") %}
    {{ TextButton({
      text: params.previousLabel if params.previousLabel else 'Föregående',
      size: 'large',
      hideTextOnMobile: true if params.pages,
      iconPosition: 'left',
      iconName: 'arrow_back',
      classNames: prevClasses,
      attributes: params.previousAttributes,
      href: params.previousUrl,
      disabled: isPrevDisabled
    })}}
    {% if params.pages %}
      <div class="{{ componentClassName }}__pages">
      {% for page in params.pages %}
        {%- set pageAttributes = getAttributes(page.attributes) %}
        {%- set pageClass = componentClassName + "__page" %}
        {%- set ariaLabel = 'aria-label="' +  'sida ' + page.label + '"' if not page.attributes["aria-label"] else "" %}
        {% if page.current %}
          <span class="{{ pageClass }} {{ pageClass }}--current" aria-current="page" {{ ariaLabel | safe }} {{- pageAttributes | safe }}>{{ page.label }}</span>
        {% else %}
          <a href="{{ page.url }}" class="{{ pageClass }}" {{ ariaLabel | safe }} {{- pageAttributes | safe }}>{{ page.label }}</a>
        {% endif %}
      {% endfor %}
      </div>
    {% endif %}
    {% set isNextDisabled = true if not params.nextUrl else false %}
    {%- set nextClasses = [
      componentClassName + "__next ",
      params.nextClassNames if params.nextClassNames,
      "invisible" if isNextDisabled
    ] | join(" ") %}
    {{ TextButton({
      text: params.nextLabel if params.nextLabel else 'Nästa',
      size: 'large',
      hideTextOnMobile: true if params.pages,
      iconPosition: 'right',
      iconName: 'arrow_forward',
      classNames: nextClasses,
      attributes: params.nextAttributes,
      href: params.nextUrl,
      disabled: isNextDisabled
    })}}
  </nav>
{% endmacro %}
