From 1583c2e892d1465f76a755d2bd72c97a393be20b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Gla=CC=88ser?= Date: Thu, 28 May 2026 11:44:50 +0200 Subject: [PATCH] Replace Meldungen overlay content with sectioned form and checkbox save flow --- patterns/vsf-list-detailseite.html | 62 ++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/patterns/vsf-list-detailseite.html b/patterns/vsf-list-detailseite.html index e638d84..4afb8aa 100644 --- a/patterns/vsf-list-detailseite.html +++ b/patterns/vsf-list-detailseite.html @@ -166,10 +166,33 @@ @@ -425,6 +448,39 @@ }); }); + const meldungenSaveButton = document.querySelector('[data-vsf-meldungen-save]'); + const meldungenCheckboxes = document.querySelectorAll('[data-vsf-meldungen-checkbox]'); + + const updateMeldungenSaveState = () => { + if (!meldungenSaveButton) { + return; + } + const hasSelection = Array.from(meldungenCheckboxes).some((checkbox) => checkbox.getAttribute('aria-checked') === 'true'); + meldungenSaveButton.disabled = !hasSelection; + meldungenSaveButton.setAttribute('aria-disabled', String(!hasSelection)); + meldungenSaveButton.classList.toggle('sg-button--process-inactive', !hasSelection); + }; + + meldungenCheckboxes.forEach((checkbox) => { + checkbox.addEventListener('click', () => { + if (checkbox.disabled) { + return; + } + + const option = checkbox.closest('[data-component="checkbox-field"]'); + const nextState = checkbox.getAttribute('aria-checked') !== 'true'; + checkbox.setAttribute('aria-checked', String(nextState)); + checkbox.classList.toggle('sg-form-active', nextState); + checkbox.classList.toggle('sg-checkbox-field--inactive-selectable', !nextState); + if (option) { + option.setAttribute('data-component-state', nextState ? 'active' : 'inactive-selectable'); + } + updateMeldungenSaveState(); + }); + }); + + updateMeldungenSaveState(); + const updatePulldownSelectionState = (demo) => { const trigger = demo.querySelector('.sg-pulldown-demo__trigger'); const selectableOptions = demo.querySelectorAll('[data-pulldown-option]');