{% set enable_accordion = pimcore_checkbox('enable_accordion').getValue() %}{% set accordion_title = pimcore_input('accordion_title').getData() %}{% set accordion_style = pimcore_select('accordion_style').getData() %}{% set title_font_size = pimcore_select('title_font_size').getData() %}{% set initially_expanded = pimcore_checkbox('initially_expanded').getValue() %}{% set single_expansion = pimcore_checkbox('single_expansion').getValue() %}{% if enable_accordion %} <style> /* Base Accordion Styles */ .wysiwyg-accordion { --accordion-border-color: #e9ecef; --accordion-text-color: #212529; --accordion-active-color: var(--bs-primary, #0d6efd); --accordion-bg: #fff; --accordion-hover-bg: #f8f9fa; --accordion-icon-size: 24px; --accordion-icon-right-spacing: 8px; /* New spacing variable */ } .wysiwyg-accordion .accordion-button { padding: 1rem 0; background: none; font-size: 1rem; font-weight: 400; color: var(--accordion-text-color); border: none; width: 100%; text-align: left; position: relative; padding-right: calc(var(--accordion-icon-size) + var(--accordion-icon-right-spacing) * 2); } /* Font Size Variations */ .wysiwyg-accordion .accordion-button.font-small { font-size: 14px; } .wysiwyg-accordion .accordion-button.font-default { font-size: 16px; } .wysiwyg-accordion .accordion-button.font-medium { font-size: 18px; } .wysiwyg-accordion .accordion-button.font-large { font-size: 20px; } .wysiwyg-accordion .accordion-button.font-xlarge { font-size: 24px; } /* Custom Plus/Minus Icon */ .wysiwyg-accordion .accordion-button::after { display: none; /* Hide default bootstrap arrow */ } .wysiwyg-accordion .accordion-button::before, .wysiwyg-accordion .accordion-button::after { content: ''; position: absolute; right: var(--accordion-icon-right-spacing); top: 50%; background-color: currentColor; transition: transform 0.2s ease, opacity 0.2s ease; } /* Horizontal line */ .wysiwyg-accordion .accordion-button::before { width: 16px; height: 2px; margin-top: -1px; } /* Vertical line (plus) */ .wysiwyg-accordion .accordion-button::after { width: 2px; height: 16px; margin-right: 7px; margin-top: -8px; display: block; } /* Animation for minus state */ .wysiwyg-accordion .accordion-button:not(.collapsed)::after { transform: rotate(90deg); opacity: 0; } .wysiwyg-accordion .accordion-body { padding: 0.5rem 0 1.5rem; font-size: 0.9rem; line-height: 1.6; color: var(--accordion-text-color); } /* Minimal Style - Like in the image */ .wysiwyg-accordion .accordion-item.minimal { border-bottom: 1px solid var(--accordion-border-color); background: transparent; margin: 0; padding: 0; } .wysiwyg-accordion .accordion-item.minimal .accordion-button { transition: color 0.2s ease; } .wysiwyg-accordion .accordion-item.minimal .accordion-button:hover { color: var(--accordion-active-color); } .wysiwyg-accordion .accordion-item.minimal .accordion-button:not(.collapsed) { color: var(--accordion-active-color); } /* Modern Style */ .wysiwyg-accordion .accordion-item.modern { border-bottom: 1px solid var(--accordion-border-color); background: transparent; } .wysiwyg-accordion .accordion-item.modern .accordion-button { padding: 1.25rem 0; } .wysiwyg-accordion .accordion-item.modern .accordion-button:not(.collapsed) { color: var(--accordion-active-color); } .wysiwyg-accordion .accordion-item.modern .accordion-body { padding: 0 0 1.25rem; } /* Card Style */ .wysiwyg-accordion .accordion-item.card { border: 1px solid var(--accordion-border-color); border-radius: 0.25rem; margin-bottom: 0.5rem; } .wysiwyg-accordion .accordion-item.card .accordion-button { padding: 1rem 1.25rem; padding-right: calc(1.25rem + var(--accordion-icon-size)); } .wysiwyg-accordion .accordion-item.card .accordion-button:not(.collapsed) { background-color: var(--accordion-hover-bg); color: var(--accordion-active-color); } .wysiwyg-accordion .accordion-item.card .accordion-body { padding: 0 1.25rem 1rem; } /* Floating Style */ .wysiwyg-accordion .accordion-item.floating { border: 1px solid var(--accordion-border-color); border-radius: 0.25rem; margin-bottom: 0.5rem; transition: border-color 0.2s ease; } .wysiwyg-accordion .accordion-item.floating:hover { border-color: var(--accordion-active-color); } .wysiwyg-accordion .accordion-item.floating .accordion-button { padding: 1rem 1.25rem; padding-right: calc(1.25rem + var(--accordion-icon-size)); } .wysiwyg-accordion .accordion-item.floating .accordion-button:not(.collapsed) { color: var(--accordion-active-color); } .wysiwyg-accordion .accordion-item.floating .accordion-body { padding: 0 1.25rem 1rem; } /* Bordered Style */ .wysiwyg-accordion .accordion-item.bordered { border-bottom: 2px solid var(--accordion-border-color); margin: 0; transition: border-color 0.2s ease; } .wysiwyg-accordion .accordion-item.bordered:hover { border-color: var(--accordion-active-color); } .wysiwyg-accordion .accordion-item.bordered .accordion-button:not(.collapsed) { color: var(--accordion-active-color); } /* Common Focus States */ .wysiwyg-accordion .accordion-button:focus { box-shadow: none; outline: none; } /* Smooth Animation */ .wysiwyg-accordion .accordion-collapse { transition: height 0.2s ease; } /* Dark Mode Support */ @media (prefers-color-scheme: dark) { .wysiwyg-accordion { --accordion-border-color: rgba(255,255,255,0.1); --accordion-text-color: #fff; --accordion-bg: #1a1a1a; --accordion-hover-bg: #2a2a2a; } } </style> <div class="wysiwyg-accordion mb-4"> {% set accordion_id = 'accordion_' ~ (editmode ? 'preview' : random()) %} {% set content_id = 'content_' ~ (editmode ? 'preview' : random()) %} <div class="accordion{% if single_expansion %} single-expansion{% endif %}" id="{{ accordion_id }}" {% if single_expansion %}data-single-expansion="true"{% endif %}> <div class="accordion-item {{ accordion_style }}"> <h2 class="accordion-header m-0"> <button class="accordion-button font-{{ title_font_size|default('default') }} {{ not initially_expanded ? 'collapsed' : '' }}" type="button" data-bs-toggle="collapse" data-bs-target="#{{ content_id }}" aria-expanded="{{ initially_expanded ? 'true' : 'false' }}" aria-controls="{{ content_id }}"> {{ accordion_title }} </button> </h2> <div id="{{ content_id }}" class="accordion-collapse collapse {{ initially_expanded ? 'show' : '' }}" {% if single_expansion %} data-bs-parent=".single-expansion" {% else %} data-bs-parent="#{{ accordion_id }}" {% endif %}> <div class="accordion-body"> {{ pimcore_wysiwyg("wysiwyg-area") }} </div> </div> </div> </div> </div> {% if single_expansion %} <script> document.addEventListener('DOMContentLoaded', function() { // Wenn Single Expansion aktiv ist, schließe alle anderen Accordions beim Öffnen eines neuen const accordions = document.querySelectorAll('.single-expansion .accordion-collapse'); accordions.forEach(collapse => { collapse.addEventListener('show.bs.collapse', function() { const otherAccordions = document.querySelectorAll('.single-expansion .accordion-collapse.show'); otherAccordions.forEach(other => { if (other !== collapse) { bootstrap.Collapse.getInstance(other).hide(); } }); }); }); }); </script> {% endif %}{% else %} <div class="wysiwyg-area mb-4"> {{ pimcore_wysiwyg("wysiwyg-area") }} </div>{% endif %}