Skip to content

Commit c536538

Browse files
author
Kerry Archibald
committed
add focusable wrapper to non-interactive tooltip triggers
1 parent 2a6c605 commit c536538

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

src/components/Tooltip/Tooltip.stories.tsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,9 @@ export const NonInteractiveTrigger = {
202202
isTriggerInteractive: false,
203203
label: "Shown without delay",
204204
children: (
205-
<span>
206-
<IconButton data-testid="testbutton" disabled>
207-
<UserIcon />
208-
</IconButton>
209-
</span>
205+
<IconButton data-testid="testbutton" disabled>
206+
<UserIcon />
207+
</IconButton>
210208
),
211209
},
212210
};

src/components/Tooltip/Tooltip.tsx

+12-3
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,11 @@ type TooltipProps = {
7373
open?: boolean;
7474
/**
7575
* Whether the trigger element is interactive.
76-
* When trigger is interactive tooltip will be shown after a 300ms delay.
77-
* When trigger is not interactive tooltip will be shown instantly when pointer enters trigger.
76+
* When trigger is interactive:
77+
* - tooltip will be shown after a 300ms delay.
78+
* When trigger is not interactive:
79+
* - tooltip will be shown instantly when pointer enters trigger.
80+
* - trigger will be wrapped in a focusable span.
7881
* @default true
7982
*/
8083
isTriggerInteractive?: boolean;
@@ -98,7 +101,13 @@ export const Tooltip = ({
98101
return (
99102
<Provider>
100103
<Root open={open} delayDuration={isTriggerInteractive ? 300 : 0}>
101-
<Trigger asChild>{children}</Trigger>
104+
<Trigger asChild>
105+
{isTriggerInteractive ? (
106+
children
107+
) : (
108+
<span tabIndex={0}>{children}</span>
109+
)}
110+
</Trigger>
102111
<Portal>
103112
<Content
104113
side={side}

0 commit comments

Comments
 (0)