Set multiselect panel width and clamp panel inside viewport
This commit is contained in:
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user