templates/_fragments/dialog.html.twig line 1

  1. <dialog id="{{ id ?? 'default-dialog-id' }}" class="dialog" {% if open_on_load|default(false) %}data-open-on-load{% endif %}>
        <button id="close-{{ id ?? 'default-dialog-id' }}" class="dialog__close" autofocus>
            <svg><use href="/build/svg/_icons.svg#close"></use></svg>
        </button>
        {% if dialog_header is not empty %}
            <h3>{{ dialog_header }}</h3>
        {% endif %}
        <div>
            {{ content|raw }}
        </div>
    </dialog>
    
    <script>
        (function () {
            const dialogs = document.querySelectorAll('dialog');
    
            dialogs.forEach(dialog => {
                const id = dialog.id;
                const closeDialogButton = document.getElementById(`close-${id}`);
                const openDialogButton = document.querySelector(`[data-open-dialog="${id}"]`);
    
                if (openDialogButton) {
                    openDialogButton.addEventListener('click', (event) => {
                        event.preventDefault();
                        dialog.showModal();
                    });
                }
    
                if (closeDialogButton) {
                    closeDialogButton.addEventListener('click', () => {
                        dialog.close();
                    });
                }
    
                if (dialog.hasAttribute('data-open-on-load')) {
                    dialog.showModal();
                }
            });
        })();
    </script>