diff --git a/src/components/common/Forms/SelectField.jsx b/src/components/common/Forms/SelectField.jsx index a08eaf8c..cefaf33f 100644 --- a/src/components/common/Forms/SelectField.jsx +++ b/src/components/common/Forms/SelectField.jsx @@ -12,6 +12,8 @@ const SelectField = ({ labelKey = "name", isLoading = false, }) => { + const [position, setPosition] = useState("bottom"); + const [open, setOpen] = useState(false); const dropdownRef = useRef(null); @@ -34,10 +36,26 @@ const SelectField = ({ setOpen(false); }; - const toggleDropdown = () => setOpen((prev) => !prev); + const toggleDropdown = () => { + if (!open) { + const rect = dropdownRef.current?.getBoundingClientRect(); + const viewportHeight = window.innerHeight; + + const spaceBelow = viewportHeight - rect.bottom; + const dropdownHeight = 200; + + if (spaceBelow < dropdownHeight) { + setPosition("top"); // open upward + } else { + setPosition("bottom"); // open downward + } + } + + setOpen((prev) => !prev); + }; return ( -
+
{label && (
)}
);