@@ -20,10 +20,11 @@ import intlMessages from '../intl/*.json';
2020import { MenuContext , MenuStateContext , useMenuStateContext } from './context' ;
2121import { MenuItem } from './MenuItem' ;
2222import { MenuSection } from './MenuSection' ;
23- import { mergeProps , useLayoutEffect , useSyncRef } from '@react-aria/utils' ;
23+ import { mergeProps , useId , useLayoutEffect , useSyncRef } from '@react-aria/utils' ;
2424import React , { ReactElement , useContext , useRef , useState } from 'react' ;
2525import { SpectrumMenuProps } from '@react-types/menu' ;
2626import styles from '@adobe/spectrum-css-temp/components/menu/vars.css' ;
27+ import { useLabel } from '@react-aria/label' ;
2728import { useLocale , useLocalizedStringFormatter } from '@react-aria/i18n' ;
2829import { useMenu } from '@react-aria/menu' ;
2930import { useTreeState } from '@react-stately/tree' ;
@@ -58,9 +59,10 @@ function Menu<T extends object>(props: SpectrumMenuProps<T>, ref: DOMRef<HTMLDiv
5859
5960 let isMobile = useIsMobileDevice ( ) ;
6061 let backButtonText = parentMenuTreeState ?. collection . getItem ( menuTreeState . expandedKeysStack . slice ( - 1 ) [ 0 ] ) ?. textValue ;
61- let backButtonLabel = stringFormatter . format ( 'backButton' , {
62- prevMenuButton : backButtonText
63- } ) ;
62+ let backButtonLabel = stringFormatter . format ( 'backButton' ) ;
63+ let buttonId = useId ( ) ;
64+ let { labelProps, fieldProps} = useLabel ( { id : buttonId , label : backButtonText , 'aria-label' : backButtonLabel , labelElementType : 'span' } ) ;
65+
6466 // TODO: add slide transition
6567 return (
6668 < MenuStateContext . Provider value = { { popoverContainerRef, trayContainerRef, menu : domRef , menuTreeState, state} } >
@@ -81,13 +83,13 @@ function Menu<T extends object>(props: SpectrumMenuProps<T>, ref: DOMRef<HTMLDiv
8183 // TODO: check labeling with team and get translated strings
8284 < div className = { classNames ( styles , 'spectrum-SubMenu-headerWrapper' ) } >
8385 < ActionButton
84- aria-label = { backButtonLabel }
86+ { ... fieldProps }
8587 isQuiet
8688 onPress = { contextProps . onBackButtonPress } >
8789 { /* We don't have a ArrowLeftSmall so make due with ArrowDownSmall and transforms */ }
8890 { direction === 'rtl' ? < ArrowDownSmall UNSAFE_style = { { rotate : '270deg' } } /> : < ArrowDownSmall UNSAFE_style = { { rotate : '90deg' } } /> }
8991 </ ActionButton >
90- < span className = { classNames ( styles , 'spectrum-SubMenu-header' ) } > { backButtonText } </ span >
92+ < span { ... labelProps } className = { classNames ( styles , 'spectrum-SubMenu-header' ) } > { backButtonText } </ span >
9193 </ div >
9294 ) }
9395 < div
0 commit comments