@@ -146,6 +146,8 @@ describe('Tree Pattern', () => {
146146 typeaheadDelay : signal ( 0 ) ,
147147 value : signal ( [ ] ) ,
148148 wrap : signal ( false ) ,
149+ nav : signal ( false ) ,
150+ currentType : signal ( 'page' ) ,
149151 } ;
150152 } ) ;
151153
@@ -179,6 +181,50 @@ describe('Tree Pattern', () => {
179181 expect ( item0_0 . posinset ( ) ) . toBe ( 1 ) ;
180182 expect ( item0_1 . posinset ( ) ) . toBe ( 2 ) ;
181183 } ) ;
184+
185+ describe ( 'nav mode' , ( ) => {
186+ let treeInputs : TestTreeInputs < string > ;
187+
188+ beforeEach ( ( ) => {
189+ treeInputs = {
190+ activeIndex : signal ( 0 ) ,
191+ disabled : signal ( false ) ,
192+ focusMode : signal ( 'roving' ) ,
193+ multi : signal ( false ) ,
194+ orientation : signal ( 'vertical' ) ,
195+ selectionMode : signal ( 'follow' ) ,
196+ skipDisabled : signal ( true ) ,
197+ textDirection : signal ( 'ltr' ) ,
198+ typeaheadDelay : signal ( 0 ) ,
199+ value : signal ( [ ] ) ,
200+ wrap : signal ( false ) ,
201+ nav : signal ( true ) ,
202+ currentType : signal ( 'page' ) ,
203+ } ;
204+ } ) ;
205+
206+ it ( 'should have undefined selected state' , ( ) => {
207+ const { allItems} = createTree ( treeExample , treeInputs ) ;
208+ const item0 = getItemByValue ( allItems ( ) , 'Item 0' ) ;
209+ treeInputs . value . set ( [ 'Item 0' ] ) ;
210+ expect ( item0 . selected ( ) ) . toBeUndefined ( ) ;
211+ } ) ;
212+
213+ it ( 'should correctly compute current state' , ( ) => {
214+ const { allItems} = createTree ( treeExample , treeInputs ) ;
215+ const item0 = getItemByValue ( allItems ( ) , 'Item 0' ) ;
216+ const item1 = getItemByValue ( allItems ( ) , 'Item 1' ) ;
217+
218+ treeInputs . value . set ( [ 'Item 0' ] ) ;
219+ expect ( item0 . current ( ) ) . toBe ( 'page' ) ;
220+ expect ( item1 . current ( ) ) . toBeUndefined ( ) ;
221+
222+ treeInputs . value . set ( [ 'Item 1' ] ) ;
223+ treeInputs . currentType . set ( 'step' ) ;
224+ expect ( item0 . current ( ) ) . toBeUndefined ( ) ;
225+ expect ( item1 . current ( ) ) . toBe ( 'step' ) ;
226+ } ) ;
227+ } ) ;
182228 } ) ;
183229
184230 describe ( 'Keyboard Navigation' , ( ) => {
@@ -197,6 +243,8 @@ describe('Tree Pattern', () => {
197243 typeaheadDelay : signal ( 0 ) ,
198244 value : signal ( [ ] ) ,
199245 wrap : signal ( false ) ,
246+ nav : signal ( false ) ,
247+ currentType : signal ( 'page' ) ,
200248 } ;
201249 } ) ;
202250
@@ -379,6 +427,8 @@ describe('Tree Pattern', () => {
379427 typeaheadDelay : signal ( 0 ) ,
380428 value : signal ( [ ] ) ,
381429 wrap : signal ( false ) ,
430+ nav : signal ( false ) ,
431+ currentType : signal ( 'page' ) ,
382432 } ;
383433 } ) ;
384434
@@ -435,6 +485,8 @@ describe('Tree Pattern', () => {
435485 typeaheadDelay : signal ( 0 ) ,
436486 value : signal ( [ ] ) ,
437487 wrap : signal ( false ) ,
488+ nav : signal ( false ) ,
489+ currentType : signal ( 'page' ) ,
438490 } ;
439491 } ) ;
440492
@@ -497,6 +549,8 @@ describe('Tree Pattern', () => {
497549 typeaheadDelay : signal ( 0 ) ,
498550 value : signal ( [ ] ) ,
499551 wrap : signal ( false ) ,
552+ nav : signal ( false ) ,
553+ currentType : signal ( 'page' ) ,
500554 } ;
501555 } ) ;
502556
@@ -653,6 +707,8 @@ describe('Tree Pattern', () => {
653707 typeaheadDelay : signal ( 0 ) ,
654708 value : signal ( [ ] ) ,
655709 wrap : signal ( false ) ,
710+ nav : signal ( false ) ,
711+ currentType : signal ( 'page' ) ,
656712 } ;
657713 } ) ;
658714
@@ -801,6 +857,8 @@ describe('Tree Pattern', () => {
801857 typeaheadDelay : signal ( 0 ) ,
802858 value : signal ( [ ] ) ,
803859 wrap : signal ( false ) ,
860+ nav : signal ( false ) ,
861+ currentType : signal ( 'page' ) ,
804862 } ;
805863 } ) ;
806864
@@ -839,6 +897,8 @@ describe('Tree Pattern', () => {
839897 typeaheadDelay : signal ( 0 ) ,
840898 value : signal ( [ ] ) ,
841899 wrap : signal ( false ) ,
900+ nav : signal ( false ) ,
901+ currentType : signal ( 'page' ) ,
842902 } ;
843903 } ) ;
844904
@@ -881,6 +941,8 @@ describe('Tree Pattern', () => {
881941 typeaheadDelay : signal ( 0 ) ,
882942 value : signal ( [ ] ) ,
883943 wrap : signal ( false ) ,
944+ nav : signal ( false ) ,
945+ currentType : signal ( 'page' ) ,
884946 } ;
885947 } ) ;
886948
@@ -927,6 +989,8 @@ describe('Tree Pattern', () => {
927989 typeaheadDelay : signal ( 0 ) ,
928990 value : signal ( [ ] ) ,
929991 wrap : signal ( false ) ,
992+ nav : signal ( false ) ,
993+ currentType : signal ( 'page' ) ,
930994 } ;
931995 } ) ;
932996
@@ -1007,6 +1071,8 @@ describe('Tree Pattern', () => {
10071071 typeaheadDelay : signal ( 0 ) ,
10081072 value : signal ( [ ] ) ,
10091073 wrap : signal ( false ) ,
1074+ nav : signal ( false ) ,
1075+ currentType : signal ( 'page' ) ,
10101076 } ;
10111077 } ) ;
10121078
@@ -1167,6 +1233,8 @@ describe('Tree Pattern', () => {
11671233 typeaheadDelay : signal ( 0 ) ,
11681234 value : signal ( [ ] ) ,
11691235 wrap : signal ( false ) ,
1236+ nav : signal ( false ) ,
1237+ currentType : signal ( 'page' ) ,
11701238 } ;
11711239 } ) ;
11721240
0 commit comments