{% from "nhsuk/components/card/macro.njk" import card as nhsukCard %}
{% from "nhsuk/components/summary-list/row/macro.njk" import summaryListRow as nhsukSummaryListRow %}
{% from "nhsuk/macros/attributes.njk" import nhsukAttributes %}

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

{%- if params.border === false and not (params.classes and "nhsuk-summary-list--no-border" in params.classes) %}
  {% set classNames = classNames ~ " nhsuk-summary-list--no-border" %}
{% elif params.lastRowBorder === false and not (params.classes and "nhsuk-summary-list--no-last-row-border" in params.classes) %}
  {% set classNames = classNames ~ " nhsuk-summary-list--no-last-row-border" %}
{% endif %}

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

{%- set rows = params.rows | select("mapping") | list if params.rows else [] %}

{#- Determine if we need 2 or 3 columns #}
{%- set hasActions = false %}
{% for row in rows %}
  {% set hasActions = true if row.actions.items | length else hasActions %}
{% endfor -%}

{%- set summaryListHtml %}
<dl class="{{ classNames }}" {%- if params.id %} id="{{ params.id }}"{% endif %} {{- nhsukAttributes(params.attributes) }}>
{% if caller %}
  {{- caller() }}
{% elif params.html %}
  {{ params.html | safe | trim | indent(2) }}
{% else %}
  {% for row in rows %}
    {{- nhsukSummaryListRow(row, {
      params: params,
      loop: loop,
      rows: rows,
      classNames: classNames,
      hasActions: hasActions
    }) | trim | indent(2, true) }}
  {% endfor %}
{% endif %}
</dl>
{%- endset %}

{%- if params.card %}
  {%- call nhsukCard(params.card) %}
    {{ summaryListHtml | safe | trim | indent(4) }}
  {%- endcall %}
{% else %}
  {{- summaryListHtml | safe | trim }}
{% endif %}
