From 9df5caf3c545a7a1c559c6561625d99154aa0603 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 21 Jan 2025 15:56:01 -0600 Subject: Update hashtag menu to use `Menu`, convert to native link for additional a11y and click handling (#7529) * Make tag a normal link on web * Replace old TagMenu with new RichTextTag component, expand and improve click utils * Clarify intents * Ensure we're passing down hint * ope * DRY --- src/components/Menu/index.tsx | 9 ++++++++- src/components/Menu/index.web.tsx | 8 +++++++- src/components/Menu/types.ts | 5 +++++ 3 files changed, 20 insertions(+), 2 deletions(-) (limited to 'src/components/Menu') diff --git a/src/components/Menu/index.tsx b/src/components/Menu/index.tsx index 99fb2d127..9c970b051 100644 --- a/src/components/Menu/index.tsx +++ b/src/components/Menu/index.tsx @@ -47,7 +47,12 @@ export function Root({ return {children} } -export function Trigger({children, label, role = 'button'}: TriggerProps) { +export function Trigger({ + children, + label, + role = 'button', + hint, +}: TriggerProps) { const context = useMenuContext() const {state: focused, onIn: onFocus, onOut: onBlur} = useInteractionState() const { @@ -65,11 +70,13 @@ export function Trigger({children, label, role = 'button'}: TriggerProps) { pressed, }, props: { + ref: null, onPress: context.control.open, onFocus, onBlur, onPressIn, onPressOut, + accessibilityHint: hint, accessibilityLabel: label, accessibilityRole: role, }, diff --git a/src/components/Menu/index.web.tsx b/src/components/Menu/index.web.tsx index d1863e478..dc9116168 100644 --- a/src/components/Menu/index.web.tsx +++ b/src/components/Menu/index.web.tsx @@ -110,7 +110,12 @@ const RadixTriggerPassThrough = React.forwardRef( ) RadixTriggerPassThrough.displayName = 'RadixTriggerPassThrough' -export function Trigger({children, label, role = 'button'}: TriggerProps) { +export function Trigger({ + children, + label, + role = 'button', + hint, +}: TriggerProps) { const {control} = useMenuContext() const { state: hovered, @@ -153,6 +158,7 @@ export function Trigger({children, label, role = 'button'}: TriggerProps) { onBlur: onBlur, onMouseEnter, onMouseLeave, + accessibilityHint: hint, accessibilityLabel: label, accessibilityRole: role, }, diff --git a/src/components/Menu/types.ts b/src/components/Menu/types.ts index 44171d42c..51baa24df 100644 --- a/src/components/Menu/types.ts +++ b/src/components/Menu/types.ts @@ -19,6 +19,7 @@ export type ItemContextType = { } export type RadixPassThroughTriggerProps = { + ref: React.RefObject id: string type: 'button' disabled: boolean @@ -37,6 +38,7 @@ export type RadixPassThroughTriggerProps = { export type TriggerProps = { children(props: TriggerChildProps): React.ReactNode label: string + hint?: string role?: AccessibilityRole } export type TriggerChildProps = @@ -59,11 +61,13 @@ export type TriggerChildProps = * object is empty. */ props: { + ref: null onPress: () => void onFocus: () => void onBlur: () => void onPressIn: () => void onPressOut: () => void + accessibilityHint?: string accessibilityLabel: string accessibilityRole: AccessibilityRole } @@ -85,6 +89,7 @@ export type TriggerChildProps = onBlur: () => void onMouseEnter: () => void onMouseLeave: () => void + accessibilityHint?: string accessibilityLabel: string accessibilityRole: AccessibilityRole } -- cgit 1.4.1