@@ -91,6 +91,44 @@ function TestNestedNavigationMenu(props: NavigationMenu.Root.Props = {}) {
9191 ) ;
9292}
9393
94+ function TestNavigationMenuOrientationAttributes ( ) {
95+ return (
96+ < NavigationMenu . Root data-testid = "top-level-root" defaultValue = "item-1" orientation = "vertical" >
97+ < NavigationMenu . List data-testid = "top-level-list" >
98+ < NavigationMenu . Item value = "item-1" >
99+ < NavigationMenu . Trigger > Item 1</ NavigationMenu . Trigger >
100+ < NavigationMenu . Content >
101+ < NavigationMenu . Root
102+ data-testid = "nested-root"
103+ defaultValue = "nested-item-1"
104+ orientation = "vertical"
105+ >
106+ < NavigationMenu . List data-testid = "nested-list" >
107+ < NavigationMenu . Item value = "nested-item-1" >
108+ < NavigationMenu . Trigger > Nested Item 1</ NavigationMenu . Trigger >
109+ < NavigationMenu . Content >
110+ < NavigationMenu . Link href = "#nested-link-1" > Nested Link 1</ NavigationMenu . Link >
111+ </ NavigationMenu . Content >
112+ </ NavigationMenu . Item >
113+ </ NavigationMenu . List >
114+
115+ < NavigationMenu . Viewport />
116+ </ NavigationMenu . Root >
117+ </ NavigationMenu . Content >
118+ </ NavigationMenu . Item >
119+ </ NavigationMenu . List >
120+
121+ < NavigationMenu . Portal >
122+ < NavigationMenu . Positioner >
123+ < NavigationMenu . Popup >
124+ < NavigationMenu . Viewport />
125+ </ NavigationMenu . Popup >
126+ </ NavigationMenu . Positioner >
127+ </ NavigationMenu . Portal >
128+ </ NavigationMenu . Root >
129+ ) ;
130+ }
131+
94132function TestInlineNestedNavigationMenu ( props : { nestedDefaultValue ?: string | null } = { } ) {
95133 const { nestedDefaultValue = 'nested-item-1' } = props ;
96134 const nestedRootProps =
@@ -794,6 +832,20 @@ describe('<NavigationMenu.Root />', () => {
794832 } ,
795833 } ) ) ;
796834
835+ it ( 'applies aria-orientation to the top-level list instead of the root element' , async ( ) => {
836+ await render ( < TestNavigationMenuOrientationAttributes /> ) ;
837+
838+ expect ( screen . getByTestId ( 'top-level-root' ) ) . not . to . have . attribute ( 'aria-orientation' ) ;
839+ expect ( screen . getByTestId ( 'top-level-list' ) ) . to . have . attribute ( 'aria-orientation' , 'vertical' ) ;
840+ } ) ;
841+
842+ it ( 'applies aria-orientation to nested lists instead of nested root elements' , async ( ) => {
843+ await render ( < TestNavigationMenuOrientationAttributes /> ) ;
844+
845+ expect ( screen . getByTestId ( 'nested-root' ) ) . not . to . have . attribute ( 'aria-orientation' ) ;
846+ expect ( screen . getByTestId ( 'nested-list' ) ) . to . have . attribute ( 'aria-orientation' , 'vertical' ) ;
847+ } ) ;
848+
797849 describe ( 'interactions' , ( ) => {
798850 it ( 'opens on hover with mouse input' , async ( ) => {
799851 await render ( < TestNavigationMenu /> ) ;
0 commit comments