The Framework Code

twigs/framework/util/accmacro.twig

File List

{% macro accordion(id, tabs, carets = FALSE) %}
    {% import '@content/iconmacro.twig' as fa %}
    <div class="accordion" id="{{id}}">
        {% for t in tabs %}
            <div class="accordion-item">
                <h2 class="accordion-header" id="{{t.id}}">
                    <button class="accordion-button{% if not t.open %} collapsed{% endif %}" type="button" data-bs-toggle="collapse" data-bs-target="#col{{t.id}}" aria-expanded="true" aria-controls="col{{t.id}}">
                        {{t.title}}
                    </button>
                </h2>
                <div id="col{{t.id}}" class="accordion-collapse{% if not t.open %}  collapse{% endif %}" aria-labelledby="{{t.id}}" data-bs-parent="#{{id}}">
                    <div class="accordion-body">
                        {% if t.with is defined %}
                            {% include t.file with t.with%}
                        {% else %}
                            {% include t.file%}
                        {% endif %}
                    </div>
                </div>
            </div>
        {% endfor %}
    </div>
{% endmacro accordion %}

{% macro caretJS(id) %}
    const v{{id}} = document.getElementById('{{id}}');
    v{{id}}.addEventListener('show.bs.collapse', function(e){
        let ch = e.target.closest('.card');
        fwdom.toggleClass(ch.querySelectorAll('.fa-caret-right'), ['fa-caret-right', 'fa-caret-down']);
    });
    v{{id}}.addEventListener('hide.bs.collapse', function(e) {
        let ch = e.target.closest('.card');
        fwdom.toggleClass(ch.querySelectorAll('.fa-caret-down'), ['fa-caret-right', 'fa-caret-down']);
    });
{% endmacro caretJS %}