From fa3a37420f854adb8190ba50c346042e9dae74b5 Mon Sep 17 00:00:00 2001 From: Kate Higa <16447748+khiga8@users.noreply.github.com> Date: Thu, 4 Sep 2025 11:46:25 -0400 Subject: [PATCH 1/3] Aria-disabled and disabled --- .../SegmentedControl.dev.stories.tsx | 44 ++++++++++++++++--- .../src/SegmentedControl/SegmentedControl.tsx | 8 ++-- .../SegmentedControlButton.tsx | 3 +- .../SegmentedControlIconButton.stories.tsx | 8 ++++ .../SegmentedControlIconButton.tsx | 7 +++ 5 files changed, 60 insertions(+), 10 deletions(-) diff --git a/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx b/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx index 890cd5858d1..2cc0127e2fe 100644 --- a/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx @@ -13,12 +13,46 @@ export default { parameters: {controls: {exclude: excludedControlKeys}}, } as Meta +export const WithAriaDisabled = () => { + const handleOnClick = () => { + alert('Button clicked!') + } + + return ( + + + Preview + + + Raw + + + Blame + + + ) +} + export const WithDisabled = () => { - const handleOnClick = (event: React.MouseEvent) => { - const isDisabled = event.currentTarget.getAttribute('disabled') === 'true' - if (isDisabled) { - return - } + const handleOnClick = () => { alert('Button clicked!') } diff --git a/packages/react/src/SegmentedControl/SegmentedControl.tsx b/packages/react/src/SegmentedControl/SegmentedControl.tsx index 144e39b5caa..8c362ee55a7 100644 --- a/packages/react/src/SegmentedControl/SegmentedControl.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControl.tsx @@ -172,16 +172,16 @@ const Root: React.FC> = ({ const sharedChildProps = { onClick: onChange ? (event: React.MouseEvent) => { - const isAriaDisabled = child.props.disabled === true - if (!isAriaDisabled) { + const isDisabled = child.props.disabled === true || child.props['aria-disabled'] === true + if (!isDisabled) { onChange(index) isUncontrolled && setSelectedIndexInternalState(index) child.props.onClick && child.props.onClick(event) } } : (event: React.MouseEvent) => { - const isAriaDisabled = child.props.disabled === true - if (!isAriaDisabled) { + const isDisabled = child.props.disabled === true || child.props['aria-disabled'] === true + if (!isDisabled) { child.props.onClick && child.props.onClick(event) isUncontrolled && setSelectedIndexInternalState(index) } diff --git a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx index a4de432e4fb..28e310c4ba0 100644 --- a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx @@ -29,6 +29,7 @@ const SegmentedControlButton: React.FC { diff --git a/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx b/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx index 5dcd7a8f326..414b757cdf2 100644 --- a/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx @@ -21,6 +21,10 @@ export type SegmentedControlIconButtonProps = { description?: string /** The direction for the tooltip.*/ tooltipDirection?: TooltipDirection + /** Whether the button is disabled. */ + disabled?: boolean + /** Whether the button is aria-disabled. */ + 'aria-disabled'?: boolean } & SxProp & ButtonHTMLAttributes @@ -32,6 +36,8 @@ export const SegmentedControlIconButton: React.FC { return ( @@ -52,6 +58,7 @@ export const SegmentedControlIconButton: React.FC {isElement(Icon) ? Icon : } From 9f33a68937a881d61195638a6eb3d61657178e16 Mon Sep 17 00:00:00 2001 From: Kate Higa <16447748+khiga8@users.noreply.github.com> Date: Thu, 4 Sep 2025 13:29:23 -0400 Subject: [PATCH 2/3] Update SegmentedControlButton.tsx --- packages/react/src/SegmentedControl/SegmentedControlButton.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx index 28e310c4ba0..47cea32cde1 100644 --- a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx @@ -19,6 +19,8 @@ export type SegmentedControlButtonProps = { leadingIcon?: React.FunctionComponent> | React.ReactElement /** Applies `aria-disabled` to the button. This will disable certain functionality, such as `onClick` events. */ disabled?: boolean + /** Applies `aria-disabled` to the button. This will disable certain functionality, such as `onClick` events. */ + ariaDisabled?: boolean } & SxProp & ButtonHTMLAttributes From 7c78904f09ea1ab44f10dad881b2977b21282c0d Mon Sep 17 00:00:00 2001 From: Tyler Jones Date: Thu, 4 Sep 2025 14:57:27 -0400 Subject: [PATCH 3/3] adjust naming --- packages/react/src/SegmentedControl/SegmentedControlButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx index 47cea32cde1..0c31ea5c1d9 100644 --- a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx @@ -20,7 +20,7 @@ export type SegmentedControlButtonProps = { /** Applies `aria-disabled` to the button. This will disable certain functionality, such as `onClick` events. */ disabled?: boolean /** Applies `aria-disabled` to the button. This will disable certain functionality, such as `onClick` events. */ - ariaDisabled?: boolean + 'aria-disabled'?: boolean } & SxProp & ButtonHTMLAttributes