{% 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 is sameas(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 is sameas(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 actions = row.actions | select("mapping") | list if row.actions and row.actions is iterable else [] %}
  {%- set actions = row.actions.items | select("mapping") | list if row.actions.items and not actions | length else actions %}
  {%- set hasActions = true if actions | 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 %}
  {{ nhsukContent({ html: params.html }) | 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 %}
