{# summaryList 
 @param {string} id The id prefix for the options. Will escape text. 
 @param {string} classes Additional classes to add to the outer fieldset. Optional 
 @param {string} lang The language used. Can be 'en','el'. Optional.
 @param {int} entryCount (NOT TO BE USED BY USERS) The count of the entry to be used in a visually hidden text for screen readers when the list is an inner list. (used in https://gov-cy.github.io/govcy-design-system-docs/components/summary_list/#making-arrays-screen-reader-friendly). Optional
 @param {Boolean} isInnerList (NOT TO BE USED BY USERS) Determines if the list is an inner list (used in https://gov-cy.github.io/govcy-design-system-docs/components/summary_list/#showing-complex-information). Optional
 @param {array} items The array of items which contain elements
 @param {string} item.key The item key. Will escape text.
 @param {array} item.value The value. This will be an array of elements.
 i.e. `
[
    {
        elements: [
            {element:"htmlElement",params:{text:{en:"January",el:"Ιανουάριος"}} }
        ]
    },
    {
        elements: [
            {element:"htmlElement",params:{text:{en:"€85",el:"€85"}} }
        ],
        classes: "govcy-text-end",
    },
    {
        elements: [
            {element:"tag",params:{text:{en:"PAYED",el:"ΠΛΗΡΩΘΗΚΕ"}, classes:"govcy-tag-green"} }
        ]
    }
]
 `
 @param {array} item.actions The array of actions objects. 
 i.e. `
[
    {
        text:{en:"Change",el:"Αλλαγή"},
        href: "#",
        classes: "govcy-link",
        visuallyHiddenText: {en:"Date of birth",el:"Ημερομηνία γέννησης"}
    },
    {
        text:{en:"Remove",el:"Διαγραφή"},
        href: "#", 
        visuallyHiddenText: {en:"Date of birth",el:"Ημερομηνία γέννησης"}
    }
]
`
 @returns govcy summaryList html 
#}
{% macro summaryList(params) -%}
{#- Import localizer from utilities -#}
{%- from "../utilities/govcyUtilities.njk" import govcyLocalizeContent, govcyLangAttribute, govcyElementsFromArray, govcyGetContent -%}
{#- Render visually hidden text for screen readers the entry number -#}
{%- if params.entryCount -%}
    {%- set entryText = govcyGetContent('common_entry', params.lang) -%}
    <h3 class="govcy-visually-hidden">{{ entryText }} {{ params.entryCount}}</h3>
{%- endif -%}
<dl {% if params.id %}id="{{ params.id }}" {% endif %}class="{% if not params.isInnerList %}govcy-summary-list{% else %}govcy-summary-list-row-internal{% endif %}{% if params.classes %} {{ params.classes }}{% endif %}"{{ govcyLangAttribute(params.lang) }}>
    {%- for item in params.items %}
    {% if not params.isInnerList %}<div class="govcy-summary-list-row">{% endif %}
        {#- KEY -#}
        <dt class="{% if not params.isInnerList %}govcy-summary-list-key{% else %}govcy-summary-list-key-internal{% endif %}">
            {{ govcyLocalizeContent(item.key, params.lang) }}
            {#- Render visually hidden text for screen readers the count of inner entries -#}
            {%- if not params.isInnerList %}{{ _countSummaryListsRenderVisualyHidden(item.value, params.lang) }}{% endif -%}
        </dt>
        {#- VALUE -#}
        <dd class="{% if not params.isInnerList %}govcy-summary-list-value{% else %}govcy-summary-list-value-internal{% endif %}">
            {%- if item.value -%}
            {{ _govcySummayListElementsFromArray(item.value, params.lang) }}
            {%- elif item.actions -%}
                {{ _summaryListActions(item.actions, params.lang) }}
            {%- endif -%}
        </dd>
        {#- ACTIONS -#}
        {%- if item.actions and item.value and not params.isInnerList -%}
        <dd class="govcy-summary-list-actions">
            {{ _summaryListActions(item.actions, params.lang) }}
        </dd>
        {%- endif %}
    {% if not params.isInnerList %}</div>{% endif %}
    {%- endfor %}
</dl>
{%- endmacro %}
{# summary list action item
 @param {array} actions The array of actions objects. 
 i.e. `
[
    {
        text:{en:"Change",el:"Αλλαγή"},
        href: "#",
        visuallyHiddenText: {en:"Date of birth",el:"Ημερομηνία γέννησης"}
    },
    {
        text:{en:"Remove",el:"Διαγραφή"},
        href: "#", 
        visuallyHiddenText: {en:"Date of birth",el:"Ημερομηνία γέννησης"}
    }
]
`
 @param {string} lang The language used. Can be 'en','el'.
 @returns govcy summary list actions html 
#}
{%- macro _summaryListActions(actions,lang) %}
    <ul class="list-inline govcy-my-0">
    {%- for action in actions %}
        <li class="list-inline-item">
            {#- render href -#}
            <a href="{% if action.href %}{{ action.href }}{% else %}#{% endif %}"{% if action.classes %}class="{{ action.classes }}"{% endif %}>
                {#- render content -#}
                {{ govcyLocalizeContent(action.text, lang) }}
                {#- If visuallyHiddenText is set -#}
                {%- if action.visuallyHiddenText %}
                <span class="govcy-visually-hidden"> {{ govcyLocalizeContent(action.visuallyHiddenText, lang) }}</span>
                {% endif -%}
            </a>
        </li>
    {%- endfor %}
    </ul>
{%- endmacro %} 
{#- --------------------------------------- -#}
{#- render govcyElements from an array -#}
{%- macro _govcySummayListElementsFromArray(elements, lang) %}
{%- from "../govcyElement.njk" import govcyElement -%}
    {%- set summaryListCount = 0 -%} {# Initialize a counter #}
    {%- for element in elements -%}
        {%- if lang and not element.params.lang -%}
            {%- set params = element.params | merge({lang: lang}) -%}
        {%- else -%}
            {%- set params = element.params -%}
        {%- endif -%}
        {%- if element.element == "summaryList" %}
            {%- set summaryListCount = summaryListCount + 1 -%} {# Increment the counter #}
            {%- set params = params | merge({isInnerList: true}) -%}
            {%- set params = params | merge({entryCount: summaryListCount}) -%}
        {% endif -%}
        {%- call govcyElement(element.element, params) %}{% endcall -%}
    {%- endfor -%}
{%- endmacro %}
{#- --------------------------------------- -#}
{%- macro _countSummaryListsRenderVisualyHidden(elements, lang) -%}
        {%- set totalCount = 0 -%}
        {%- for item in elements -%}
            {%- if item.element == "summaryList" -%}
                {%- set totalCount = totalCount + 1 -%}
            {%- endif -%}
        {%- endfor -%}
        {%- set entriesText = govcyGetContent('common_entries', lang) -%}
        {%- if totalCount > 0 %}<span class="govcy-visually-hidden">{{ totalCount }} {{ entriesText }}</span>{% endif -%}
{%- endmacro %}

