diff --git a/src/lib/components/common/Select.svelte b/src/lib/components/common/Select.svelte index 93a151d227..1e02ac4a88 100644 --- a/src/lib/components/common/Select.svelte +++ b/src/lib/components/common/Select.svelte @@ -66,7 +66,19 @@ contentEl.style.position = 'fixed'; contentEl.style.zIndex = '9999'; contentEl.style.minWidth = `${rect.width}px`; - if (side === 'top') { + + const contentHeight = contentEl.offsetHeight || 0; + const spaceBelow = window.innerHeight - rect.bottom - 4; + const spaceAbove = rect.top - 4; + + let openAbove = side === 'top'; + if (side === 'bottom' && spaceBelow < contentHeight && spaceAbove > spaceBelow) { + openAbove = true; + } else if (side === 'top' && spaceAbove < contentHeight && spaceBelow > spaceAbove) { + openAbove = false; + } + + if (openAbove) { contentEl.style.bottom = `${window.innerHeight - rect.top + 4}px`; contentEl.style.top = 'auto'; } else {