diff --git a/src/components/modals/NewConnectionModal.tsx b/src/components/modals/NewConnectionModal.tsx index e01f7507..6c9a1445 100644 --- a/src/components/modals/NewConnectionModal.tsx +++ b/src/components/modals/NewConnectionModal.tsx @@ -3209,7 +3209,7 @@ export const NewConnectionModal = ({ disabled={isPersistencePending} aria-busy={isPersistencePending} className={clsx( - "bg-elevated border border-strong rounded-xl shadow-2xl w-[900px] max-w-[92vw] max-h-[90vh] flex flex-col overflow-hidden p-0 m-0 min-w-0", + "bg-elevated border border-strong rounded-xl shadow-2xl w-[900px] max-w-[92vw] h-[min(760px,90vh)] flex flex-col overflow-hidden p-0 m-0 min-w-0", isPersistencePending && "pointer-events-none", )} > diff --git a/tests/components/modals/NewConnectionModal.test.tsx b/tests/components/modals/NewConnectionModal.test.tsx index df152c2c..a19242c1 100644 --- a/tests/components/modals/NewConnectionModal.test.tsx +++ b/tests/components/modals/NewConnectionModal.test.tsx @@ -291,6 +291,31 @@ function pickEngineFromCatalogue() { ); } +describe("NewConnectionModal layout", () => { + beforeEach(() => { + vi.clearAllMocks(); + driverState.defaultPort = 15432; + vi.mocked(invoke).mockResolvedValue("ok"); + sshMocks.loadSshConnections.mockResolvedValue([]); + k8sMocks.loadK8sConnections.mockResolvedValue([]); + k8sMocks.getK8sContexts.mockResolvedValue(["ctx"]); + k8sMocks.getK8sNamespaces.mockResolvedValue(["db"]); + k8sMocks.getK8sResources.mockResolvedValue(["mysql-svc"]); + k8sMocks.getK8sResourcePorts.mockResolvedValue([6543]); + k8sMocks.validateK8sPath.mockResolvedValue(undefined); + }); + + it("keeps the dialog shell at a stable viewport-bounded height", () => { + const { container } = renderModal(); + const shell = container.querySelector("fieldset"); + + expect(shell).toHaveClass("h-[min(760px,90vh)]"); + expect(shell).toHaveClass("overflow-hidden"); + expect(shell).toHaveClass("flex"); + expect(shell).toHaveClass("flex-col"); + }); +}); + async function openInlineK8s() { const view = renderModal(); pickEngineFromCatalogue();