{% from "nhsuk/components/link/macro.njk" import link as nhsukLink %}
{% from "nhsuk/components/heading/macro.njk" import heading as nhsukHeading %}
{% from "nhsuk/components/visually-hidden/macro.njk" import visuallyHidden as nhsukVisuallyHidden %}
{% from "nhsuk/macros/attributes.njk" import nhsukAttributes %}
{% from "nhsuk/macros/content.njk" import nhsukContent %}

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

{#- Support meta as string #}
{%- set meta = params.meta if params.meta is mapping and params.meta is not escaped else {
  text: params.meta if params.meta is string else undefined,
  html: params.meta if params.meta is escaped else undefined
} %}

{#- Support copyright as string #}
{%- set copyright = params.copyright if params.copyright is mapping and params.copyright is not escaped else {
  text: params.copyright if params.copyright is string else undefined,
  html: params.copyright if params.copyright is escaped else undefined
} %}

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

{%- set columns = params.columns | default(4, true) %}

{%- if columns == 1 %}
  {%- set width = "full" %}
{%- elif columns == 2 %}
  {%- set width = "one-half" %}
{%- elif columns == 3 %}
  {%- set width = "one-third" %}
{%- else %}
  {%- set width = "one-quarter" %}
  {%- set columns = 4 %}
{%- endif %}

{%- macro _footerList(items, modifier) %}
<ul class="nhsuk-footer__list">
{% for item in items %}
  {% if item %}
  <li class="nhsuk-footer__list-item">
    {{ nhsukLink({
      text: item.text,
      html: item.html,
      href: item.href,
      openInNewTab: item.openInNewTab,
      className: "nhsuk-footer__list-item-link",
      attributes: item.attributes
    }) | trim | indent(4) }}
  </li>
  {% endif %}
{% endfor %}
</ul>
{%- endmacro -%}

<footer class="{{ classNames }}" {%- if params.id %} id="{{ params.id }}"{% endif %} role="contentinfo"
  {{- nhsukAttributes(params.attributes) }}>
  <div class="nhsuk-width-container {%- if params.containerClasses %} {{ params.containerClasses }}{% endif %}">
{% if params.navigation %}
  {% for row in ([params.navigation] if params.navigation is mapping else params.navigation) | batch(columns) %}
    <div class="nhsuk-footer__navigation nhsuk-grid-row">
    {% for navigation in row %}
      <div class="nhsuk-grid-column-{{ navigation.width | default(width, true) }}">
      {% if navigation.heading or navigation.title %}
        {#- Support navigation heading as string (with deprecated options) #}
        {%- set heading = navigation.heading if navigation.heading is mapping and navigation.heading is not escaped else {
          text: navigation.heading if navigation.heading is string else navigation.title,
          html: navigation.heading if navigation.heading is escaped else undefined
        } %}

        {{- nhsukHeading({
          id: heading.id,
          text: heading.text,
          html: heading.html,
          visuallyHiddenText: heading.visuallyHiddenText,
          caption: heading.caption,
          href: heading.href,
          openInNewTab: heading.openInNewTab,
          level: 2,
          size: "s",
          className: "nhsuk-footer__heading",
          classPrefix: "nhsuk-heading-",
          classes: heading.classes,
          attributes: heading.attributes
        }) | trim | indent(8, true) }}
      {% endif %}
      {% if navigation.html %}
        {{ nhsukContent({ html: navigation.html }) | trim | indent(8) }}
      {% elif navigation.text %}
        <p class="nhsuk-body-s">
          {{- nhsukContent({ text: navigation.text }) | trim | indent(8) -}}
        </p>
      {% endif %}
      {% if navigation.items %}
        {{ _footerList(navigation.items) | trim | indent(8) }}
      {% endif %}
      </div>
    {% endfor %}
    </div>
  {% endfor %}
{% endif %}
    <div class="nhsuk-footer__meta">
{% if caller or meta.items | length or meta.text or meta.html %}
    {% if meta.items %}
      {{ nhsukVisuallyHidden({
        text: meta.visuallyHiddenText | default(meta.visuallyHiddenTitle) | default("Support links"),
        element: "h2"
      }) | trim | indent(6) }}
      {{ _footerList(meta.items) | trim | indent(6) }}
    {% endif %}
    {% if caller %}
      {{- caller() }}
    {% elif meta.html %}
      {{ nhsukContent({ html: meta.html }) | trim | indent(6) }}
    {% elif meta.text %}
      <p class="nhsuk-body-s">
        {{- nhsukContent({ text: meta.text }) | trim | indent(6) -}}
      </p>
    {% endif %}
{% endif %}
    {% if copyright.html %}
      {{ nhsukContent({ html: copyright.html }) | trim | indent(6) }}
    {% elif copyright.text or copyright.text not in ["", none, false] %}
      <p class="nhsuk-body-s">
        {{- nhsukContent({ text: copyright.text | default("© NHS England", true) }) | trim | indent(6) -}}
      </p>
    {% endif %}
    </div>
  </div>
</footer>
