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;
}
const panelRect = panel.getBoundingClientRect();
if (panelRect.right > window.innerWidth) {
demo.dataset.align = 'right';
const viewportInset = 16;
demo.dataset.align = 'left';
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 (alignedPanelRect.left < 0) {
demo.dataset.align = 'left';
if (initialRect.left + offsetX < viewportInset) {
offsetX += viewportInset - (initialRect.left + offsetX);
}
panel.style.left = `${offsetX}px`;
});
});
+3 -8
View File
@@ -1873,18 +1873,13 @@ section + section {
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 {
width: 100%;
width: 500px;
max-width: calc(100vw - (2 * var(--spacing-large)));
}
@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;
}
}