From 29cebedfad7e73f40ad06576cfeb79e7a7a97a4a Mon Sep 17 00:00:00 2001 From: "pramod.mahajan" Date: Sat, 6 Dec 2025 11:12:25 +0530 Subject: [PATCH] fixed selectfield ui --- src/components/common/Forms/SelectField.jsx | 75 +++++++++++++++------ 1 file changed, 53 insertions(+), 22 deletions(-) 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 && (
)}
);