From 00424fb37ef159347bc884aff2c5f0e7e603007d Mon Sep 17 00:00:00 2001 From: Michael Jordan Date: Wed, 7 Oct 2020 14:54:47 -0400 Subject: [PATCH] fix(#1149) useTooltipTrigger should not add aria-describedby when Tooltip it references is not in DOM `useTooltipTrigger` always adds `aria-describedby` regardless of whether the `state.isOpen` or not. At: https://github.com/adobe/react-spectrum/blob/975957a3c3fb4a9f3be358428e0980a4d4e51c1a/packages/%40react-aria/tooltip/src/useTooltipTrigger.ts#L135 `state.open` is a `function`, so it's always `true`, whereas `state.isOpen` is a `boolean`, this line should be: ```jsx 'aria-describedby': state.isOpen ? tooltipId : undefined, ``` --- packages/@react-aria/tooltip/src/useTooltipTrigger.ts | 2 +- packages/@react-spectrum/tooltip/test/TooltipTrigger.test.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/@react-aria/tooltip/src/useTooltipTrigger.ts b/packages/@react-aria/tooltip/src/useTooltipTrigger.ts index 0fd11033328..d45e3aaeb9e 100644 --- a/packages/@react-aria/tooltip/src/useTooltipTrigger.ts +++ b/packages/@react-aria/tooltip/src/useTooltipTrigger.ts @@ -132,7 +132,7 @@ export function useTooltipTrigger(props: TooltipTriggerProps, state: TooltipTrig return { triggerProps: { - 'aria-describedby': state.open ? tooltipId : undefined, + 'aria-describedby': state.isOpen ? tooltipId : undefined, ...mergeProps(focusableProps, hoverProps, pressProps) }, tooltipProps: { diff --git a/packages/@react-spectrum/tooltip/test/TooltipTrigger.test.js b/packages/@react-spectrum/tooltip/test/TooltipTrigger.test.js index 79f911c2752..82f0ef3f98b 100644 --- a/packages/@react-spectrum/tooltip/test/TooltipTrigger.test.js +++ b/packages/@react-spectrum/tooltip/test/TooltipTrigger.test.js @@ -831,11 +831,13 @@ describe('TooltipTrigger', function () { ); fireEvent.mouseMove(document.body); let button = getByLabelText('trigger'); + expect(button).not.toHaveAttribute('aria-describedBy'); fireEvent.mouseEnter(button); fireEvent.mouseMove(button); let tooltip = getByRole('tooltip'); expect(button).toHaveAttribute('aria-describedBy', tooltip.id); fireEvent.mouseLeave(button); + expect(button).not.toHaveAttribute('aria-describedBy'); }); }); });