diff --git a/components/interactive-elements.html b/components/interactive-elements.html index 698d0cd..57cbb6a 100644 --- a/components/interactive-elements.html +++ b/components/interactive-elements.html @@ -704,11 +704,6 @@ if (isActive && !hasSelectedOption) { options[0].setAttribute('aria-checked', 'true'); } - - options.forEach((option) => { - option.classList.toggle('sg-checkbox-field--inactive-selectable', !isActive); - option.classList.toggle('sg-form-active', isActive && option.getAttribute('aria-checked') === 'true'); - }); target.dataset.open = 'false'; trigger.setAttribute('aria-expanded', 'false'); updatePulldownSelectionState(target); @@ -840,6 +835,9 @@ if (checkbox.disabled) { return; } + if (checkbox.matches('[data-pulldown-option]')) { + return; + } const activatableOption = checkbox.closest('[data-component="checkbox-field"][data-activatable="true"]'); if (activatableOption) { @@ -926,6 +924,7 @@ const updatePulldownSelectionState = (demo) => { const trigger = demo.querySelector('.sg-pulldown-demo__trigger'); const selectableOptions = demo.querySelectorAll('[data-pulldown-option]'); + const isActivatableInactive = demo.dataset.activatable === 'true' && demo.dataset.componentState !== 'active'; if (!trigger || selectableOptions.length === 0) { return; @@ -936,22 +935,30 @@ }).length; selectableOptions.forEach((option) => { + const isSelected = option.getAttribute('aria-checked') === 'true'; const optionRow = option.closest('.sg-pulldown-option'); if (!optionRow) { + if (option.classList.contains('sg-checkbox-field')) { + option.classList.toggle('sg-form-active', !isActivatableInactive && isSelected); + option.classList.toggle('sg-checkbox-field--inactive-selectable', isActivatableInactive || !isSelected); + } return; } optionRow.classList.toggle( 'sg-pulldown-option--selected', - option.getAttribute('aria-checked') === 'true' + isSelected ); + if (option.classList.contains('sg-checkbox-field')) { + option.classList.toggle('sg-form-active', !isActivatableInactive && isSelected); + option.classList.toggle('sg-checkbox-field--inactive-selectable', isActivatableInactive || !isSelected); + } }); const labelBase = trigger.dataset.labelBase || 'Auswahl'; trigger.textContent = selectedCount > 0 ? `${labelBase} (${selectedCount})` : labelBase; const isActivatableActive = demo.dataset.activatable === 'true' && demo.dataset.componentState === 'active'; - const isActivatableInactive = demo.dataset.activatable === 'true' && demo.dataset.componentState !== 'active'; const showActiveState = !isActivatableInactive && (selectedCount > 0 || isActivatableActive); trigger.classList.toggle('sg-pulldown--selected', showActiveState); trigger.classList.toggle('sg-form-active', showActiveState);