Set multiselect panel width and clamp panel inside viewport

This commit is contained in:
2026-05-20 13:16:57 +02:00
parent 674abc8ad6
commit 25c7654534
2 changed files with 17 additions and 14 deletions
+14 -6
View File
@@ -404,15 +404,23 @@
return; return;
} }
const panelRect = panel.getBoundingClientRect(); const viewportInset = 16;
if (panelRect.right > window.innerWidth) { demo.dataset.align = 'left';
demo.dataset.align = 'right'; panel.style.left = '0px';
panel.style.right = 'auto';
const initialRect = panel.getBoundingClientRect();
let offsetX = 0;
if (initialRect.right > window.innerWidth - viewportInset) {
offsetX -= initialRect.right - (window.innerWidth - viewportInset);
} }
const alignedPanelRect = panel.getBoundingClientRect(); if (initialRect.left + offsetX < viewportInset) {
if (alignedPanelRect.left < 0) { offsetX += viewportInset - (initialRect.left + offsetX);
demo.dataset.align = 'left';
} }
panel.style.left = `${offsetX}px`;
}); });
}); });
+3 -8
View File
@@ -1873,18 +1873,13 @@ section + section {
margin-top: var(--spacing-small); margin-top: var(--spacing-small);
} }
.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo {
width: 500px;
max-width: 100%;
}
.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo .sg-pulldown-demo__trigger,
.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo .sg-pulldown-panel { .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo .sg-pulldown-panel {
width: 100%; width: 500px;
max-width: calc(100vw - (2 * var(--spacing-large)));
} }
@media (max-width: 48rem) { @media (max-width: 48rem) {
.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo { .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
width: 80vw; width: 80vw;
} }
} }