Gate multiselect sliders by local on off toggle

This commit is contained in:
2026-05-27 10:45:38 +02:00
parent 3e99e1c242
commit 0be27e6a6a
+29 -19
View File
@@ -36,7 +36,7 @@
<span>Checkbox 1</span> <span>Checkbox 1</span>
</label> </label>
<label class="sg-slider-row" data-component="slider" data-component-state="active" data-activatable="true"> <label class="sg-slider-row sg-slider-row--inactive-selectable" data-component="slider" data-component-state="inactive-selectable" data-activatable="true">
<button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 1: aus"> <button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 1: aus">
<span class="sg-mode-toggle__switch" aria-hidden="true"> <span class="sg-mode-toggle__switch" aria-hidden="true">
<span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span> <span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span>
@@ -46,18 +46,19 @@
</button> </button>
<span class="sg-label">Slider 1</span> <span class="sg-label">Slider 1</span>
<input <input
class="sg-interaction-element sg-slider sg-form-active" class="sg-interaction-element sg-slider sg-form-inactive-selectable"
type="range" type="range"
min="1" min="1"
max="10" max="10"
step="0.1" step="0.1"
value="6.5" value="6.5"
aria-label="Slider 1 von 1 bis 10" aria-label="Slider 1 von 1 bis 10"
disabled
> >
<output class="sg-slider-value" for="slider">6.5</output> <output class="sg-slider-value" for="slider">6.5</output>
</label> </label>
<label class="sg-slider-row" data-component="slider" data-component-state="active" data-activatable="true"> <label class="sg-slider-row sg-slider-row--inactive-selectable" data-component="slider" data-component-state="inactive-selectable" data-activatable="true">
<button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 2: aus"> <button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 2: aus">
<span class="sg-mode-toggle__switch" aria-hidden="true"> <span class="sg-mode-toggle__switch" aria-hidden="true">
<span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span> <span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span>
@@ -67,18 +68,19 @@
</button> </button>
<span class="sg-label">Slider 2</span> <span class="sg-label">Slider 2</span>
<input <input
class="sg-interaction-element sg-slider sg-form-active" class="sg-interaction-element sg-slider sg-form-inactive-selectable"
type="range" type="range"
min="1" min="1"
max="10" max="10"
step="0.1" step="0.1"
value="9.5" value="9.5"
aria-label="Slider 2 von 1 bis 10" aria-label="Slider 2 von 1 bis 10"
disabled
> >
<output class="sg-slider-value" for="slider">9.5</output> <output class="sg-slider-value" for="slider">9.5</output>
</label> </label>
<label class="sg-slider-row" data-component="slider" data-component-state="active" data-activatable="true"> <label class="sg-slider-row sg-slider-row--inactive-selectable" data-component="slider" data-component-state="inactive-selectable" data-activatable="true">
<button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 3: aus"> <button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 3: aus">
<span class="sg-mode-toggle__switch" aria-hidden="true"> <span class="sg-mode-toggle__switch" aria-hidden="true">
<span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span> <span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span>
@@ -88,18 +90,19 @@
</button> </button>
<span class="sg-label">Slider 3</span> <span class="sg-label">Slider 3</span>
<input <input
class="sg-interaction-element sg-slider sg-form-active" class="sg-interaction-element sg-slider sg-form-inactive-selectable"
type="range" type="range"
min="1" min="1"
max="10" max="10"
step="0.1" step="0.1"
value="5.0" value="5.0"
aria-label="Slider 3 von 1 bis 10" aria-label="Slider 3 von 1 bis 10"
disabled
> >
<output class="sg-slider-value" for="slider">5.0</output> <output class="sg-slider-value" for="slider">5.0</output>
</label> </label>
<label class="sg-slider-row" data-component="slider" data-component-state="active" data-activatable="true"> <label class="sg-slider-row sg-slider-row--inactive-selectable" data-component="slider" data-component-state="inactive-selectable" data-activatable="true">
<button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 4: aus"> <button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 4: aus">
<span class="sg-mode-toggle__switch" aria-hidden="true"> <span class="sg-mode-toggle__switch" aria-hidden="true">
<span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span> <span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span>
@@ -109,13 +112,14 @@
</button> </button>
<span class="sg-label">Slider 4</span> <span class="sg-label">Slider 4</span>
<input <input
class="sg-interaction-element sg-slider sg-form-active" class="sg-interaction-element sg-slider sg-form-inactive-selectable"
type="range" type="range"
min="1" min="1"
max="10" max="10"
step="0.1" step="0.1"
value="6.5" value="6.5"
aria-label="Slider 4 von 1 bis 10" aria-label="Slider 4 von 1 bis 10"
disabled
> >
<output class="sg-slider-value" for="slider">6.5</output> <output class="sg-slider-value" for="slider">6.5</output>
</label> </label>
@@ -124,7 +128,7 @@
<section class="sg-form-sections-card__chapter" aria-labelledby="multiselect-block-2"> <section class="sg-form-sections-card__chapter" aria-labelledby="multiselect-block-2">
<h2 id="multiselect-block-2" class="sg-strong sg-form-sections-card__chapter-title">Block 2</h2> <h2 id="multiselect-block-2" class="sg-strong sg-form-sections-card__chapter-title">Block 2</h2>
<label class="sg-slider-row" data-component="slider" data-component-state="active" data-activatable="true"> <label class="sg-slider-row sg-slider-row--inactive-selectable" data-component="slider" data-component-state="inactive-selectable" data-activatable="true">
<button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 5: aus"> <button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 5: aus">
<span class="sg-mode-toggle__switch" aria-hidden="true"> <span class="sg-mode-toggle__switch" aria-hidden="true">
<span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span> <span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span>
@@ -134,18 +138,19 @@
</button> </button>
<span class="sg-label">Slider 5</span> <span class="sg-label">Slider 5</span>
<input <input
class="sg-interaction-element sg-slider sg-form-active" class="sg-interaction-element sg-slider sg-form-inactive-selectable"
type="range" type="range"
min="1" min="1"
max="10" max="10"
step="0.1" step="0.1"
value="3.0" value="3.0"
aria-label="Slider 5 von 1 bis 10" aria-label="Slider 5 von 1 bis 10"
disabled
> >
<output class="sg-slider-value" for="slider">3.0</output> <output class="sg-slider-value" for="slider">3.0</output>
</label> </label>
<label class="sg-slider-row" data-component="slider" data-component-state="active" data-activatable="true"> <label class="sg-slider-row sg-slider-row--inactive-selectable" data-component="slider" data-component-state="inactive-selectable" data-activatable="true">
<button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 6: aus"> <button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 6: aus">
<span class="sg-mode-toggle__switch" aria-hidden="true"> <span class="sg-mode-toggle__switch" aria-hidden="true">
<span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span> <span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span>
@@ -155,18 +160,19 @@
</button> </button>
<span class="sg-label">Slider 6</span> <span class="sg-label">Slider 6</span>
<input <input
class="sg-interaction-element sg-slider sg-form-active" class="sg-interaction-element sg-slider sg-form-inactive-selectable"
type="range" type="range"
min="1" min="1"
max="10" max="10"
step="0.1" step="0.1"
value="2.5" value="2.5"
aria-label="Slider 6 von 1 bis 10" aria-label="Slider 6 von 1 bis 10"
disabled
> >
<output class="sg-slider-value" for="slider">2.5</output> <output class="sg-slider-value" for="slider">2.5</output>
</label> </label>
<label class="sg-slider-row" data-component="slider" data-component-state="active" data-activatable="true"> <label class="sg-slider-row sg-slider-row--inactive-selectable" data-component="slider" data-component-state="inactive-selectable" data-activatable="true">
<button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 7: aus"> <button class="sg-mode-toggle sg-mode-toggle--local sg-activation-mode-toggle" type="button" data-active="absolute" aria-label="Aktivierung Slider 7: aus">
<span class="sg-mode-toggle__switch" aria-hidden="true"> <span class="sg-mode-toggle__switch" aria-hidden="true">
<span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span> <span class="sg-activation-mode-toggle__switch-label sg-activation-mode-toggle__switch-label--left">aus</span>
@@ -176,13 +182,14 @@
</button> </button>
<span class="sg-label">Slider 7</span> <span class="sg-label">Slider 7</span>
<input <input
class="sg-interaction-element sg-slider sg-form-active" class="sg-interaction-element sg-slider sg-form-inactive-selectable"
type="range" type="range"
min="1" min="1"
max="10" max="10"
step="0.1" step="0.1"
value="1.6" value="1.6"
aria-label="Slider 7 von 1 bis 10" aria-label="Slider 7 von 1 bis 10"
disabled
> >
<output class="sg-slider-value" for="slider">1.6</output> <output class="sg-slider-value" for="slider">1.6</output>
</label> </label>
@@ -308,11 +315,11 @@
if (!slider) { if (!slider) {
return; return;
} }
sliderRow.dataset.componentState = 'active'; sliderRow.dataset.componentState = isActive ? 'active' : 'inactive-selectable';
sliderRow.classList.remove('sg-slider-row--inactive-selectable'); sliderRow.classList.toggle('sg-slider-row--inactive-selectable', !isActive);
slider.classList.add('sg-form-active'); slider.classList.toggle('sg-form-active', isActive);
slider.classList.remove('sg-form-inactive-selectable'); slider.classList.toggle('sg-form-inactive-selectable', !isActive);
slider.disabled = false; slider.disabled = !isActive;
return; return;
} }
@@ -424,6 +431,9 @@
}; };
slider.addEventListener('input', () => { slider.addEventListener('input', () => {
if (row.dataset.activatable === 'true' && row.dataset.componentState !== 'active') {
return;
}
updateSliderState(); updateSliderState();
}); });