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