diff --git a/packages/react/dialog/src/dialog.test.tsx b/packages/react/dialog/src/dialog.test.tsx index 7e2fe0b9c..4e4d9fd83 100644 --- a/packages/react/dialog/src/dialog.test.tsx +++ b/packages/react/dialog/src/dialog.test.tsx @@ -87,8 +87,8 @@ describe('given a default Dialog', () => { }); describe('when no description has been provided', () => { - it('should warn to the console', () => { - expect(consoleWarnMockFunction).toHaveBeenCalledTimes(1); + it('should not warn to the console', () => { + expect(consoleWarnMockFunction).not.toHaveBeenCalled(); }); }); diff --git a/packages/react/dialog/src/dialog.tsx b/packages/react/dialog/src/dialog.tsx index dbbaa4126..f246ea81a 100644 --- a/packages/react/dialog/src/dialog.tsx +++ b/packages/react/dialog/src/dialog.tsx @@ -31,6 +31,8 @@ type DialogContextValue = { contentId: string; titleId: string; descriptionId: string; + hasDescription: boolean; + setHasDescription(value: boolean): void; open: boolean; onOpenChange(open: boolean): void; onOpenToggle(): void; @@ -58,6 +60,7 @@ const Dialog: React.FC = (props: ScopedProps) => { } = props; const triggerRef = React.useRef(null); const contentRef = React.useRef(null); + const [hasDescription, setHasDescription] = React.useState(false); const [open, setOpen] = useControllableState({ prop: openProp, defaultProp: defaultOpen ?? false, @@ -73,6 +76,8 @@ const Dialog: React.FC = (props: ScopedProps) => { contentId={useId()} titleId={useId()} descriptionId={useId()} + hasDescription={hasDescription} + setHasDescription={setHasDescription} open={open} onOpenChange={setOpen} onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])} @@ -404,7 +409,7 @@ const DialogContentImpl = React.forwardRef - + )} @@ -457,6 +462,11 @@ const DialogDescription = React.forwardRef, forwardedRef) => { const { __scopeDialog, ...descriptionProps } = props; const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog); + React.useEffect(() => { + context.setHasDescription(true); + return () => context.setHasDescription(false); + }, [context]); + return ; }, );