From 730cc137bb59a941ec0bd4544804439dba1baee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Gla=CC=88ser?= Date: Mon, 25 May 2026 08:52:09 +0200 Subject: [PATCH] Fix multiselect pulldown control start alignment by panel label width --- patterns/multiselektions-pulldown.html | 21 +++++++++++++++++++++ styles/25-patterns-form-sections.css | 10 +++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/patterns/multiselektions-pulldown.html b/patterns/multiselektions-pulldown.html index 425938e..c9ff7ef 100644 --- a/patterns/multiselektions-pulldown.html +++ b/patterns/multiselektions-pulldown.html @@ -389,6 +389,24 @@ ); }; + const updateMultiselectLabelAlignment = () => { + document.querySelectorAll('.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel').forEach((panel) => { + const labels = panel.querySelectorAll( + '.sg-slider-row[data-activatable="true"] > .sg-label, .sg-radio-activatable-group > .sg-label, [data-pulldown-filter-row] > .sg-pulldown-panel__label' + ); + + let maxWidth = 0; + labels.forEach((label) => { + const width = Math.ceil(label.getBoundingClientRect().width); + if (width > maxWidth) { + maxWidth = width; + } + }); + + panel.style.setProperty('--sg-multiselect-label-column-width', `${maxWidth}px`); + }); + }; + document.querySelectorAll('.sg-slider-row').forEach((row) => { const slider = row.querySelector('.sg-slider'); const valueOutput = row.querySelector('.sg-slider-value'); @@ -469,6 +487,9 @@ }); }); + updateMultiselectLabelAlignment(); + window.addEventListener('resize', updateMultiselectLabelAlignment); + document.querySelectorAll('.sg-pulldown-demo').forEach((demo) => { const trigger = demo.querySelector('.sg-pulldown-demo__trigger'); diff --git a/styles/25-patterns-form-sections.css b/styles/25-patterns-form-sections.css index 43fcfda..b8a8c64 100644 --- a/styles/25-patterns-form-sections.css +++ b/styles/25-patterns-form-sections.css @@ -73,9 +73,13 @@ margin-top: var(--spacing-large); } +.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel { + --sg-multiselect-label-column-width: max-content; +} + .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] { display: grid; - grid-template-columns: max-content max-content minmax(0, 1fr) auto; + grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr) auto; align-items: center; column-gap: var(--spacing-large); } @@ -105,7 +109,7 @@ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group { display: grid; - grid-template-columns: max-content max-content minmax(0, 1fr); + grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr); align-items: center; column-gap: var(--spacing-large); } @@ -124,7 +128,7 @@ } .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] { - grid-template-columns: max-content max-content minmax(0, 1fr); + grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr); column-gap: var(--spacing-large); }