File tree Expand file tree Collapse file tree 2 files changed +45
-1
lines changed
tests/unit/components/Navigator Expand file tree Collapse file tree 2 files changed +45
-1
lines changed Original file line number Diff line number Diff line change 23
23
>
24
24
<SidenavIcon class =" icon-inline close-icon" />
25
25
</button >
26
- <Reference :url =" technologyPath" class =" navigator-head" :id =" INDEX_ROOT_KEY" >
26
+ <Reference
27
+ class =" navigator-head"
28
+ :url =" technologyPath"
29
+ :id =" INDEX_ROOT_KEY"
30
+ @click.alt.native.prevent =" toggleAllNodes"
31
+ >
27
32
<h2 class =" card-link" >
28
33
{{ technology }}
29
34
</h2 >
@@ -281,6 +286,7 @@ export default {
281
286
NO_CHILDREN ,
282
287
ERROR_FETCHING ,
283
288
ITEMS_FOUND ,
289
+ allNodesToggled: false ,
284
290
};
285
291
},
286
292
computed: {
@@ -506,6 +512,20 @@ export default {
506
512
},
507
513
},
508
514
methods: {
515
+ toggleAllNodes () {
516
+ const parentNodes = this .children .filter (child => child .parent === INDEX_ROOT_KEY
517
+ && child .type !== TopicTypes .groupMarker && child .childUIDs .length );
518
+ // make sure all nodes get either open or close
519
+ this .allNodesToggled = ! this .allNodesToggled ;
520
+ if (this .allNodesToggled ) {
521
+ this .openNodes = {};
522
+ this .generateNodesToRender ();
523
+ }
524
+
525
+ parentNodes .forEach ((node ) => {
526
+ this .toggleFullTree (node);
527
+ });
528
+ },
509
529
clearFilters () {
510
530
this .filter = ' ' ;
511
531
this .debouncedFilter = ' ' ;
Original file line number Diff line number Diff line change @@ -364,6 +364,30 @@ describe('NavigatorCard', () => {
364
364
expect ( wrapper . vm . focusedIndex ) . toBe ( wrapper . findAll ( NavigatorCardItem ) . length - 1 ) ;
365
365
} ) ;
366
366
367
+ it ( 'allows expand/collapse all symbols when clicking on framework name + while pressing alt' , async ( ) => {
368
+ const wrapper = createWrapper ( ) ;
369
+ await flushPromises ( ) ;
370
+ // assert initial items are rendered
371
+ expect ( wrapper . findAll ( NavigatorCardItem ) ) . toHaveLength ( 4 ) ;
372
+
373
+ const navHead = wrapper . find ( '.navigator-head' ) ;
374
+
375
+ // open all children symbols
376
+ navHead . trigger ( 'click' , { altKey : true } ) ;
377
+ await wrapper . vm . $nextTick ( ) ;
378
+ expect ( wrapper . findAll ( NavigatorCardItem ) ) . toHaveLength ( children . length ) ;
379
+
380
+ // close all children symbols
381
+ navHead . trigger ( 'click' , { altKey : true } ) ;
382
+ await wrapper . vm . $nextTick ( ) ;
383
+ expect ( wrapper . findAll ( NavigatorCardItem ) ) . toHaveLength ( 2 ) ;
384
+
385
+ // open all children symbols
386
+ navHead . trigger ( 'click' , { altKey : true } ) ;
387
+ await wrapper . vm . $nextTick ( ) ;
388
+ expect ( wrapper . findAll ( NavigatorCardItem ) ) . toHaveLength ( children . length ) ;
389
+ } ) ;
390
+
367
391
it ( 'allows the user to navigate to the first item on the list when pressing alt + up key' , async ( ) => {
368
392
const wrapper = createWrapper ( ) ;
369
393
await flushPromises ( ) ;
You can’t perform that action at this time.
0 commit comments