Activate process button on VSF list-card form input

This commit is contained in:
2026-05-27 16:53:04 +02:00
parent d94fd4e530
commit 9166d67f22
+24
View File
@@ -83,6 +83,25 @@
</section> </section>
<script> <script>
const formCard = document.querySelector('#layout-vsf-list-card .sg-form-sections-card');
const processButton = formCard?.querySelector('.sg-button--process');
const updateProcessButtonState = () => {
if (!formCard || !processButton) {
return;
}
const hasPulldownSelection = Array.from(formCard.querySelectorAll('[data-pulldown-option]'))
.some((option) => option.getAttribute('aria-checked') === 'true');
const hasTextInput = Array.from(formCard.querySelectorAll('input[type="text"], textarea'))
.some((field) => field.value.trim().length > 0);
const isActive = hasPulldownSelection || hasTextInput;
processButton.disabled = !isActive;
processButton.setAttribute('aria-disabled', String(!isActive));
processButton.classList.toggle('sg-button--process-inactive', !isActive);
};
const updatePulldownSelectionState = (demo) => { const updatePulldownSelectionState = (demo) => {
const trigger = demo.querySelector('.sg-pulldown-demo__trigger'); const trigger = demo.querySelector('.sg-pulldown-demo__trigger');
const selectableOptions = demo.querySelectorAll('[data-pulldown-option]'); const selectableOptions = demo.querySelectorAll('[data-pulldown-option]');
@@ -101,6 +120,7 @@
trigger.classList.toggle('sg-form-active', selectedCount > 0); trigger.classList.toggle('sg-form-active', selectedCount > 0);
trigger.dataset.componentState = selectedCount > 0 ? 'selected' : 'inactive-selectable'; trigger.dataset.componentState = selectedCount > 0 ? 'selected' : 'inactive-selectable';
demo.dataset.componentState = selectedCount > 0 ? 'selected' : 'inactive-selectable'; demo.dataset.componentState = selectedCount > 0 ? 'selected' : 'inactive-selectable';
updateProcessButtonState();
}; };
document.querySelectorAll('.sg-pulldown-demo').forEach((demo) => { document.querySelectorAll('.sg-pulldown-demo').forEach((demo) => {
@@ -148,6 +168,10 @@
}); });
document.querySelectorAll('.sg-pulldown-demo').forEach(updatePulldownSelectionState); document.querySelectorAll('.sg-pulldown-demo').forEach(updatePulldownSelectionState);
formCard?.querySelectorAll('input[type="text"], textarea').forEach((field) => {
field.addEventListener('input', updateProcessButtonState);
});
updateProcessButtonState();
document.addEventListener('click', (event) => { document.addEventListener('click', (event) => {
if (event.target.closest('.sg-pulldown-demo')) { if (event.target.closest('.sg-pulldown-demo')) {