Skip to content

Commit 35a98c0

Browse files
authored
pr feedback
1 parent 887353e commit 35a98c0

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ export type UnderlinePanelsProps = {
4343
* ID of the element containing the name for the tab list
4444
*/
4545
'aria-labelledby'?: React.AriaAttributes['aria-labelledby']
46-
/**
47-
* Callback that will trigger both on click selection and keyboard selection.
48-
*/
49-
onSelect?: (event: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>) => void
5046
/**
5147
* Custom string to use when generating the IDs of tabs and `aria-labelledby` for the panels
5248
*/
@@ -231,13 +227,21 @@ const UnderlinePanels: FC<UnderlinePanelsProps> = ({
231227

232228
const Tab: FC<TabProps> = ({'aria-selected': ariaSelected, sx: sxProp = defaultSxProp, onSelect, ...props}) => {
233229
const clickHandler = React.useCallback(
234-
(event: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
230+
(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
235231
if (!event.defaultPrevented && typeof onSelect === 'function') {
236232
onSelect(event)
237233
}
238234
},
239235
[onSelect],
240236
)
237+
const keyDownHandler = React.useCallback(
238+
(event: React.KeyboardEvent<HTMLButtonElement>) => {
239+
if ((event.key === ' ' || event.key === 'Enter') && !event.defaultPrevented && typeof onSelect === 'function') {
240+
onSelect(event)
241+
}
242+
},
243+
[onSelect],
244+
)
241245

242246
return (
243247
<UnderlineItem
@@ -248,6 +252,7 @@ const Tab: FC<TabProps> = ({'aria-selected': ariaSelected, sx: sxProp = defaultS
248252
sx={sxProp}
249253
type="button"
250254
onClick={clickHandler}
255+
onKeyDown={keyDownHandler}
251256
{...props}
252257
/>
253258
)

0 commit comments

Comments
 (0)