diff --git a/apps/web/src/components/__tests__/dialog.test.tsx b/apps/web/src/components/__tests__/dialog.test.tsx index 719f791..fcda051 100644 --- a/apps/web/src/components/__tests__/dialog.test.tsx +++ b/apps/web/src/components/__tests__/dialog.test.tsx @@ -38,6 +38,22 @@ describe("Dialog", () => { expect(dialog?.hasAttribute("open")).toBe(false); }); + it("unmounts children when closed so internal state does not persist", () => { + const { rerender } = render( + {}}> + Body + , + ); + expect(screen.queryByText("Body")).not.toBeNull(); + + rerender( + {}}> + Body + , + ); + expect(screen.queryByText("Body")).toBeNull(); + }); + it("calls onClose on cancel event", () => { const onClose = vi.fn(); render( diff --git a/apps/web/src/components/ui/dialog.tsx b/apps/web/src/components/ui/dialog.tsx index fcd80b2..de634a2 100644 --- a/apps/web/src/components/ui/dialog.tsx +++ b/apps/web/src/components/ui/dialog.tsx @@ -46,7 +46,7 @@ export function Dialog({ open, onClose, className, children }: DialogProps) { className, )} > -
{children}
+ {open ?
{children}
: null} ); }