diff --git a/ui/litellm-dashboard/src/components/templates/key_info_view.test.tsx b/ui/litellm-dashboard/src/components/templates/key_info_view.test.tsx index 4bf41c1f3a8..7276b9d47b7 100644 --- a/ui/litellm-dashboard/src/components/templates/key_info_view.test.tsx +++ b/ui/litellm-dashboard/src/components/templates/key_info_view.test.tsx @@ -326,6 +326,25 @@ describe("KeyInfoView", () => { }); }); + it("bounds the detail panel scroll container to the viewport so edit form actions stay reachable", async () => { + vi.mocked(useAuthorized).mockReturnValue(baseUseAuthorizedMock); + + const { container } = renderWithProviders( + {}} + keyId={"test-key-id"} + onKeyDataUpdate={() => {}} + teams={[]} + />, + ); + + const boundedScrollContainers = Array.from(container.querySelectorAll(".overflow-y-auto")).filter((el) => + el.classList.contains("max-h-[85vh]"), + ); + expect(boundedScrollContainers).toHaveLength(1); + }); + it("should not render tags in metadata textarea", async () => { vi.mocked(useAuthorized).mockReturnValue(baseUseAuthorizedMock); diff --git a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx index 3c2c9bb352d..d1a48a9b340 100644 --- a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx +++ b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx @@ -513,7 +513,7 @@ export default function KeyInfoView({ const inheritedGates = hasOwnBudget ? [] : inheritedBudgetGates(parentTeam, parentOrg, ownerUser); return ( -
+